【问题标题】:Android: Retrieve data from sqlite DatabaseAndroid:从 sqlite 数据库中检索数据
【发布时间】:2014-04-01 02:07:39
【问题描述】:
我目前的数据库设置如下:
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_LOCKERNUMBER
+ " TEXT NOT NULL, " + KEY_STATUS + " INTEGER, " + KEY_PIN
+ " INTEGER);");
我正在尝试编写一种方法来从列中获取特定储物柜号码的密码。有任何想法吗?我很新,我想我需要使用查询功能和游标。我只是获取整数值并将其存储到一个 int 变量中,这样我就可以将用户输入的密码与数据库中的密码进行比较。
【问题讨论】:
标签:
java
android
database
sqlite
【解决方案1】:
对数据库的查询返回 Cursor object。您应该使用db.query() 方法来获取一行。传递表名,您想要获取的列数组(如果您想要所有列,则为 null),传递一个应该类似于 "id = ?" 或 "key > ?" 的选择字符串,然后传递一个包含该值的字符串数组对于前一个字符串中的?,
最后为having、groupBy 和orderBy 传递null,除非你想使用它们。
Cursor cursor = db.query(TABLE_NAME, new String[] { KEY_ROWID }, "id = ?", new String[] { Integer.toString(id) }, null, null, null);
得到Cursor后,做cursor.moveToFirst()或cursor.moveToPosition(0)(具体方法记不清了,重点是把光标移到检索到的第一行)
然后你将遍历cursor
while(cursor.moveToNext()) {
int keyRowIdColumnIndex = cursor.getColumnIndex(KEY_ROWID);
int yourValue = cursor.getInt(keyRowIdColumnIndex);
int keyLockNumberColumnIndex = cursor.getColumnIndex(KEY_LOCKNUMBER);
int pin = cursor.getInt(keyLockNumberColumnIndex);
}
【解决方案3】:
//Try This code
public String getLabeId(String LockNo)
{
ArrayList<String> Key_Pin_array = new ArrayList<String>();
Cursor cur = db.rawQuery("SELECT * FROM DATABASE_TABLE where KEY_LOCKERNUMBER = '" + LockNo + "'", null);
try {
while (cur.moveToNext())
{
System.out.println("Key_Pin" + cur.getString(3));
Key_Pin_array.add(cur.getString(3));
}
}
catch (Exception e)
{
System.out.println("error in getLabelID in DB() :" + e);
}
finally
{
cur.close();
}
return id;
}