我的编码问题。我正在使用eclipse和sqlite expert personal for database。
这是我的mydatabaseadapter代码。
public class MyDatabaseAdapter {
public static final String DATABASE_NAME = "Surah";
public static final String DATABASE_TABLE_SURAH = "surah";
public static final String DATABASE_TABLE_COUNT = "count";
private static final int DATABASE_VERSION = 1;
// surah related columns
public static final String SURAH_NAME ="surah_name";
public static final String NO_OF_VERSE = "no_of_verse";
public static final String SURAH_ID ="surah_id";
// count related colums
public static final String VERSE_NAME = "verse_name";
public static final String COUNT = "count";
public static final String HIGHEST_VERSE_ID = "highest_verse_id";
private static final String TAG = "MyDatabaseAdapter";
/**
* Database creation sql statement
*/
private static final String DATABASE_CREATE_SURAH =
"create table IF NOT EXISTS " + DATABASE_TABLE_SURAH + " (" + SURAH_ID + " integer primary key, "
+ SURAH_NAME + " TEXT not null," + NO_OF_VERSE + " INTEGER not null," + HIGHEST_VERSE_ID +
" INTEGER REFERENCES COUNT(HIGHEST_VERSE_ID));";
private static final String DATABASE_CREATE_COUNT =
"create table IF NOT EXISTS " + DATABASE_TABLE_COUNT + " (" + SURAH_ID + " integer REFERENCES SURAH(SURAH_ID), "
+ VERSE_NAME + " TEXT not null," + COUNT + " INTEGER not null," + HIGHEST_VERSE_ID +
" INTEGER PRIMARY KEY NOT NULL);";
// Context of the Activity that is using this database
private final Context mCtx;
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
public MyDatabaseAdapter(Context ctx) {
this.mCtx = ctx;
}
public MyDatabaseAdapter open() throws SQLException {
mDbHelper = new DatabaseHelper(mCtx);
mDb = mDbHelper.getWritableDatabase();
return this;
}
// Database helper class
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase mDb) {
mDb.execSQL(DATABASE_CREATE_SURAH);
mDb.execSQL(DATABASE_CREATE_COUNT);
}
@Override
public void onUpgrade(SQLiteDatabase mDb, int oldVersion, int newVersion) {
if (newVersion > oldVersion)
{
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
mDb.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_SURAH);
mDb.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_COUNT);
onCreate(mDb);
}
else
{
mDb.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_SURAH);
mDb.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_COUNT);
}
}
}
public void updatecount(String c)
{
mDb = mDbHelper.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(COUNT, c);
String[] whereArgs ={null};
mDb.update(DATABASE_TABLE_COUNT, cv, "HIGHEST_VERSE_ID =? ", whereArgs);
}
/**
* Close database
*/
public void close() {
mDbHelper.close();
}
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
}
我的问题是logcat说我没有计数栏!!
这是logcat上的错误
11-25 13:41:42.213: E/SQLiteLog(16293): (1) no such column: count
11-25 13:41:42.223: D/AndroidRuntime(16293): Shutting down VM
11-25 13:41:42.223: W/dalvikvm(16293): threadid=1: thread exiting with uncaught exception (group=0xb1a30ba8)
11-25 13:41:42.323: D/dalvikvm(16293): GC_FOR_ALLOC freed 28K, 3% free 4507K/4612K, paused 55ms, total 59ms
11-25 13:41:42.333: E/AndroidRuntime(16293): FATAL EXCEPTION: main
11-25 13:41:42.333: E/AndroidRuntime(16293): Process: com.aino.hafazan, PID: 16293
11-25 13:41:42.333: E/AndroidRuntime(16293): android.database.sqlite.SQLiteException: no such column: count (code 1): , while compiling: UPDATE count SET count=? WHERE HIGHEST_VERSE_ID =?
11-25 13:41:42.333: E/AndroidRuntime(16293): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
当我将数据库信息从ddms data / data / database / surah传输到sqlite expert personal时,据称命名为count的列将更改为countinteger。我完全不知道为什么它改为countinteger bcs我把它设置为mydatabaseadapter上的计数。请帮助我。
答案 0 :(得分:1)
看起来你应该有一个空间:
... COUNT + " INTEGER not null," ...
但是当桌子首次创建时,可能没有空间。您可能需要删除表/清除应用程序数据并再次尝试。