Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未找到SQLite android列_Android_Database_Sqlite - Fatal编程技术网

未找到SQLite android列

未找到SQLite android列,android,database,sqlite,Android,Database,Sqlite,假设我的代码是正确的,但即使它给出了在_hour&_min内找不到的错误列: package com.example.ifest; public class ProfileView extends ListActivity{ int hour,min; TimePicker tp ; String e,e1; static int p = 0; Spinner spn ; Button b1,b2,b3; EditText et;

假设我的代码是正确的,但即使它给出了在_hour&_min内找不到的错误列:

package com.example.ifest;


public class ProfileView extends ListActivity{

    int hour,min;
    TimePicker tp ;
    String e,e1;
    static int p = 0;
    Spinner spn ;
    Button b1,b2,b3;
    EditText et;
    String str1;
    ArrayList<String> list = new ArrayList<String>();
    ArrayAdapter<String> adapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
        list.add("Create");
        openDB();
        p++;

        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);
        setListAdapter(adapter);      
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        if(position == 0){
            final Dialog build = new Dialog(ProfileView.this);
            build.setTitle("String Name and Details");
            build.setContentView(R.layout.activity_dialog);
            build.show();
            spn = (Spinner)build.findViewById(R.id.spinner1_Dialog);
            et = (EditText) build.findViewById(R.id.editText1_Dialog);
            b2 = (Button) build.findViewById(R.id.button1_Dialog);
            tp = (TimePicker)build.findViewById(R.id.timePicker1_Dialog);
            b3 = (Button)build.findViewById(R.id.button2_Dialog);
            tp.setIs24HourView(true);
            tp.setCurrentMinute(00);

            b2.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    build.dismiss();
                    hour = tp.getCurrentHour();
                    min = tp.getCurrentMinute();
                    list.add(et.getText().toString());
                    addDB(et.getText().toString(),spn.getLastVisiblePosition(),hour,min);
                    adapter.notifyDataSetChanged();
                    setListAdapter(adapter);
                }
            });

            b3.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    build.dismiss();
                }
            });
        }
    }

    protected void addDB(String name,int id,int h,int m) {
        DBHandler handle = new DBHandler(this);
        SQLiteDatabase db = handle.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("_name",name);
        if(id == 0)
            cv.put("_type","WIFI");
        else if(id == 1)
            cv.put("_type","BLUETOOTH");
        else if(id == 2)
            cv.put("_type","MEDIA");
        cv.put("_hour", h);
        cv.put("_min", m);
        db.insert("_table", null , cv);
        db.close();
    }

    private void openDB() {
        if(p != 0){ 
            DBHandler handle = new DBHandler(this);
            SQLiteDatabase db = handle.getReadableDatabase();

            Cursor c = db.rawQuery("SELECT * FROM "+ "_table",null);
            c.moveToFirst();
            while(c.moveToNext()){
                list.add(c.getString(1));
                Log.d("cursor", c.getString(1));
            }
            c.close();
            db.close();
        }
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater inflate = getMenuInflater();
        inflate.inflate(R.menu.string_main,menu);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater mi = getMenuInflater();
        mi.inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        switch(item.getItemId()){
        case R.id.item1:
            final Dialog build = new Dialog(ProfileView.this);
            build.setTitle("String Name and Details");
            build.setContentView(R.layout.activity_dialog);
            build.show();
            spn = (Spinner)build.findViewById(R.id.spinner1_Dialog);
            et = (EditText) build.findViewById(R.id.editText1_Dialog);
            b2 = (Button) build.findViewById(R.id.button1_Dialog);
            tp = (TimePicker)build.findViewById(R.id.timePicker1_Dialog);
            b3 = (Button)build.findViewById(R.id.button2_Dialog);
            tp.setIs24HourView(true);
            tp.setCurrentMinute(00);

            b2.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    build.dismiss();
                    hour = tp.getCurrentHour();
                    min = tp.getCurrentMinute();
                    list.add(et.getText().toString());
                    addDB(et.getText().toString(),spn.getLastVisiblePosition(),hour,min);
                    adapter.notifyDataSetChanged();
                    setListAdapter(adapter);
                }
            });

            b3.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    build.dismiss();
                }
            });
            break;

        case R.id.item2:
            break;

        case R.id.item3:
            Intent i = new Intent("com.example.ifest.ABOUTUS");
            startActivity(i);
            break;

        case R.id.item4:
            finish();
            break;
        }
        return true;
    }
}

SQL exec语句是否有任何错误?表示任何空格或其他内容?

在运行应用程序至少一次后,您似乎已更改了
DBHandler\onCreate()
中的表架构。如果是这样,您需要增加
DB\u VERSION=2


数据库本身不会检查
onCreate()
中的代码,对于新架构,您需要告诉数据库在进行更改后查找更改。最简单的方法是增加数据库(423):android.Database.sqlite.SQLiteException:table\u table没有名为_min:的列,而编译时:INSERT INTO _table(_type,_name,_min)值(?,,?);日志中有错误吗?您以后是否将_hour和_min列添加到SQLiteOpenHelper类中?我认为您忽略了一些代码。上面唯一的插入包括
\u hour
,它不是您输出日志的一部分。不,我想我没有遗漏,您所说的“仅插入包括\u hour”的确切含义是什么?vinay我的db helper类中已经有了这些列没有问题。由于这回答了您的问题,请单击复选标记。
public class DBHandler extends SQLiteOpenHelper{

    private static final String DB_NAME = "event_db";
    private static final int DB_VERSION = 1;
    private static final String TABLE_NAME = "_table";
    private static final String EVENT_NAME = "_name";
    private static final String EVENT_ID = "_no";
    private static final String EVENT_TYPE = "_type";
    private static final String EVENT_HOUR = "_hour";
    private static final String EVENT_MINUTE = "_min";


    public DBHandler(Context context) {
        super(context, DB_NAME, null, DB_VERSION);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + EVENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
                    + EVENT_NAME + " TEXT NOT NULL, " + EVENT_TYPE + " TEXT NOT NULL, " + EVENT_HOUR +"  INTEGER, " + EVENT_MINUTE + " INTEGER " + ");");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);        
    }
}