传输到sqlite expert personal时列的名称已更改

时间:2014-11-25 18:54:17

标签: android database sqlite

我的编码问题。我正在使用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上的计数。请帮助我。

1 个答案:

答案 0 :(得分:1)

看起来你应该有一个空间:

... COUNT + " INTEGER not null," ...

但是当桌子首次创建时,可能没有空间。您可能需要删除表/清除应用程序数据并再次尝试。