Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
Android SQLite3,未找到表_Android_Database_Sqlite - Fatal编程技术网

Android SQLite3,未找到表

Android SQLite3,未找到表,android,database,sqlite,Android,Database,Sqlite,作为一名业余爱好者,我有几个月的时间为Android开发,这是我第一次尝试使用数据库。我将此类作为数据库帮助器: public class ContactsDbAdapter { public static final String KEY_NAME = "name"; public static final String KEY_CONTACT_ID = "contactID"; public static final String KEY_ROWID = "_id";

作为一名业余爱好者,我有几个月的时间为Android开发,这是我第一次尝试使用数据库。我将此类作为数据库帮助器:

public class ContactsDbAdapter {
    public static final String KEY_NAME = "name";
    public static final String KEY_CONTACT_ID = "contactID";
    public static final String KEY_ROWID = "_id";

    private static final String TAG = "ContactsDbAdapter";
    private DatabaseHelper mDbHelper;
    private SQLiteDatabase mDb;

    private static final String DATABASE_CREATE = "create table contacts (_id integer primary key autoincrement, "
            + "name text not null, contactID text not null);";
    private final Context mCtx;
    private static final String DATABASE_NAME = "data";
    private static final String DATABASE_TABLE = "contacts";
    private static final int DATABASE_VERSION = 2;

    private static class DatabaseHelper extends SQLiteOpenHelper {

        DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
            Log.v("t", "super(context,DATABSENAME,null..etc)");
        }

        @Override
        public void onCreate(SQLiteDatabase db) {

            db.execSQL(DATABASE_CREATE);
            Log.v("t", "db.execSQL(database_create)");
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            //TODO
        }
    }

    public ContactsDbAdapter(Context ctx) {
        this.mCtx = ctx;
        Log.v("t", "Constructor, this.mCtx=ctx");
    }

    public ContactsDbAdapter open() throws SQLException {
        mDbHelper = new DatabaseHelper(mCtx);
        mDb = mDbHelper.getWritableDatabase();
        return this;
    }

    public void close() {
        mDbHelper.close();
    }

    public long addContact(String name, String contactId) {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_NAME, name);
        initialValues.put(KEY_CONTACT_ID, contactId);

        return mDb.insert(DATABASE_TABLE, null, initialValues);
    }

}
在主活动onCreate()方法中,我使用

        mDbHelper = new ContactsDbAdapter(this);
        mDbHelper.open();
然后在我代码的某个地方调用数据库

mDbHelper.addContact(name, contactId);
这会失败,因为数据库显然找不到名为contacts的表:

12-19 19:48:50.436: I/Database(276): sqlite returned: error code = 1, msg = no such table: contacts
任何关于我做错了什么的想法,也许我在创建数据库时做错了什么


谢谢

您好,您可以使用sqladministrator进行sqlite3检查。您是否尝试将数据库版本常量增加到3?您的onCreate方法可能没有被调用,因为它认为您使用的是正确的db版本。将DATABASE_版本更改为3有效,您能否快速解释原因?