【发布时间】:2015-01-11 15:23:38
【问题描述】:
我正在向 sqlite 表添加数据,如下所示:
public void addAuthDetails(String authCode, int sessionId, int paramsCrC, int returnStock, int firstTime){
SQLiteDatabase db = getWritableDatabase();
ContentValues authValue = new ContentValues();
authValue.put(AUTH_CODE, authCode);
authValue.put(SESSION_ID, sessionId);
authValue.put(PARAM_CRC, paramsCrC);
authValue.put(RETURN_STOCK, returnStock);
authValue.put(FIRST_TIME_RUN, firstTime);
db.insert(TABLE_AUTH, null, authValue);
}
这个数据库中只有一行,但是,当我尝试查询会话 id 时它返回零,并且我已经调试并且会话 id 的值不为零。
这是我如何查询以获取会话 ID。
public int getSessionId(){
int sessionId = 0;
String sessionIdQuery = "SELECT * FROM " + TABLE_AUTH;
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery(sessionIdQuery, null);
if(cursor.moveToFirst()){
sessionId = cursor.getInt(cursor.getColumnIndex(SESSION_ID));
}
return sessionId;
}
我不确定为什么我的值为零?谁能帮我解决这个问题,我将不胜感激。
编辑一些 DBManager 代码
public DBManager(Context ctx) {
super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_USER_TABLE);
db.execSQL(CREATE_AUTH_TABLE);
db.execSQL(CREATE_PARAMS_TABLE);
db.execSQL(CREATE_PRODUCTS_TABLE);
db.execSQL(CREATE_VENDORS_TABLE);
db.execSQL(CREATE_STOCK_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_STOCK);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_VENDORS);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_PRODUCTS);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_PARAMS);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_AUTH);
onCreate(db);
}
//TABLE_AUTH Create Statement
public static final String CREATE_AUTH_TABLE = "CREATE TABLE "
+ TABLE_AUTH + "("
+ AUTH_CODE + " TEXT, "
+ SESSION_ID + " TEXT, "
+ AUTH_TIME + " INTEGER, "
+ TOKEN + " TEXT, "
+ PARAM_CRC + " INTEGER, "
+ FIRST_TIME_RUN + "INTEGER, "
+ RETURN_STOCK + "INTEGER, "
+ ENCRYPT_KEY
+ " TEXT" + ")";
【问题讨论】:
-
查询工作正常并且您的数据库中存在记录?
-
最好先测试一下你的数据库有没有值。你可以使用为eclipse添加SQLiteManager插件来测试它。
-
是的,当我进入 getSessionId() 方法时,游标的大小为 1,(它应该)并且它进入并点击行 sessionId = cursor.getInt...。但它仍然返回为零,我已经在方法的第一行初始化了它!这很令人困惑,因为我遵循的所有 tuts,这就是它的完成方式
-
@andrewww 我正在与 Android studio 合作,我会看看是否有类似的东西
-
检查光标是否移动到第一个。