您好我在我的类中创建了一个扩展SQLiteOpenHelper的onCreate表的问题,这里是代码:
public class EntriesDatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "accounts.db";
private static final String TABLE_NAME = "diary";
private static final String COLUMN_ID = "id";
private static final String COLUMN_TITLE = "title";
private static final String COLUMN_DETAILS = "details";
private static final String COLUMN_SAVE_DATE = "save_date";
private static final String COLUMN_USER_ID = "user_id";
SQLiteDatabase db;
private static final String TABLE_CREATE = "create table " + TABLE_NAME
+ " (" + COLUMN_ID + " integer primary key not null, "
+ COLUMN_TITLE + " text not null, "
+ COLUMN_DETAILS + " text not null, "
+ COLUMN_SAVE_DATE + " text not null, "
+ COLUMN_USER_ID + " integer not null);";
public EntriesDatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE);
this.db = db;
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
String query = "DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(query);
this.onCreate(db);
}
public void insertEntry(DiaryEntries entries){
db = this.getWritableDatabase();
ContentValues values = new ContentValues();
String query = "SELECT * FROM " + TABLE_NAME;
Cursor cursor = db.rawQuery(query, null);
int count = cursor.getCount();
values.put(COLUMN_ID, count);
values.put(COLUMN_TITLE, entries.getTitle());
values.put(COLUMN_DETAILS, entries.getDetails());
values.put(COLUMN_SAVE_DATE, entries.getDate());
values.put(COLUMN_USER_ID, entries.getUser_id());
db.insert(TABLE_NAME, null, values);
db.close();
}
}
错误:android.database.sqlite.SQLiteException:没有这样的表:日记(代码 1):,编译时:SELECT * FROM diary
完整的logcat:
FATAL EXCEPTION: main
android.database.sqlite.SQLiteException: no such table: diary (code 1): , while compiling: SELECT * FROM diary
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253)
at elec4.app.android.diaryapp.EntriesDatabaseHelper.insertEntry(EntriesDatabaseHelper.java:55)
at elec4.app.android.diaryapp.WriteDiary$1.onClick(WriteDiary.java:81)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
这里是使用类的代码:
EntriesDatabaseHelper helper = new EntriesDatabaseHelper(this);
DiaryEntries entries = new DiaryEntries();
entries.setTitle(data_title);
entries.setDetails(data_details);
entries.setDate(date);
entries.setUser_id(Integer.parseInt(user_id));
helper.insertEntry(entries);
//inserted into the database
finish();
它应该已经创建了表但是它怎么没有。帮助谢谢
答案 0 :(得分:0)
确定有人评论要更改数据库版本,我有一个使用database_version = 1的第一个类,我将值更改为2.它工作。我想问你为什么需要更改版本?抱歉,sqlite上的新功能
答案 1 :(得分:0)
试试这个private static final String TABLE_CREATE = "create table " + TABLE_NAME
+ " (" + COLUMN_ID + " integer primary key not null, "
+ COLUMN_TITLE + " text not null, "
+ COLUMN_DETAILS + " text not null, "
+ COLUMN_SAVE_DATE + " text not null, "
+ COLUMN_USER_ID + " integer not null)";
并使用debugCompile 'com.amitshekhar.android:debug-db:0.4.0'
检查