Android:从sqlite数据库中检索数据

时间:2014-04-01 02:07:39

标签: java android database sqlite

我目前的数据库设置如下:

db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID
                    + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_LOCKERNUMBER
                    + " TEXT NOT NULL, " + KEY_STATUS + " INTEGER, " + KEY_PIN
                    + " INTEGER);");

我正在尝试编写一种方法来从列中获取特定储物柜号码的密码。有任何想法吗?我很新,我想我需要使用查询功能和游标。我只需要一个获取整数值并将其存储到int变量中,这样我就可以比较用户输入的密码和数据库中的密码。

3 个答案:

答案 0 :(得分:1)

查询数据库返回Cursor object。您应该使用db.query()方法获取行。传递表名,要获取的列数组(如果需要所有列,则返回null),传递应该类似于"id = ?""key > ?"的选择字符串等,然后传递一个字符串包含前一个字符串中?的值的数组, 最后为havinggroupByorderBy传递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);
}

答案 1 :(得分:0)

这是一项非常直接的任务,有很多tutorials, examplessimilar questions on SO

  

How to perform an SQLite query within an Android application?

通常 - 您需要查询传递搜索参数的数据库。请参阅documentation

它会返回一个Cursor,其中包含匹配的结果,您可以then iterate overmanipulate as you wish

Fyi - 将密码存储在数据库表中是个坏主意。在Android数据库上可以访问并轻松阅读。如果重要的话,您需要加密数据或考虑另一种存储方式。

答案 2 :(得分:0)

         //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;
 }