0

Androidでデータベースを使用する方法を学習しようとしています。これまでに、テーブル内のすべてのデータ行をフェッチする方法を学習しましたが、SQLクエリを使用して値を検索する方法がわかりません。これは、以下のメソッドに渡す文字列値と同じですか?

誰かが私のコードでSQLを使用してデータベースをクエリする方法を簡単なコードで追加できるでしょうか?ヘルプを正確に!ありがとう!

このようなもの:String query = "Select * from DB_TABLE where TABLE_IMAGE_PATH = filePath";

// Read from database
public String readContacts(String filePath){

    String[] columns = new String[]{TABLE_ID, TABLE_IMAGE_PATH, TABLE_CONTACT_NAME, TABLE_CONTACT_NUMBER, TABLE_CONTACT_ADDRESS};
    Cursor c = db.query(DB_TABLE, columns, null, null, null, null, null);

    int id = c.getColumnIndex(TABLE_ID);
    int imagePath = c.getColumnIndex(TABLE_IMAGE_PATH);
    int name = c.getColumnIndex(TABLE_CONTACT_NAME);
    int number = c.getColumnIndex(TABLE_CONTACT_NUMBER);
    int address = c.getColumnIndex(TABLE_CONTACT_ADDRESS);

    String result = "";

    for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){ 
    result = result + c.getString(id) + " " + c.getString(imagePath) + " " + c.getString(name) + " " + c.getString(number) + " " + c.getString(address);
    }

    return result;
}
4

2 に答える 2

3

クエリを検索できます

正確な文字列

String query = "Select * from DB_TABLE where TABLE_IMAGE_PATH  like  '"+filePath+"';

値に文字列が含まれている場合

String query = "Select * from DB_TABLE where TABLE_IMAGE_PATH  like  '%"+filePath+"%';

値が最後から必要な場合

String query = "Select * from DB_TABLE where TABLE_IMAGE_PATH  like  '%"+filePath+"';

値が最初から必要な場合

String query = "Select * from DB_TABLE where TABLE_IMAGE_PATH  like  '"+filePath+"%';

これらを入れて

SQLiteDatabase dbR = this.getReadableDatabase();
    Cursor cur = dbR.rawQuery("query", null);
            return cur

このカーソルを使用すると、値を取得できます。

于 2013-03-03T10:42:36.613 に答える
1

クエリ コードを次のように変更することで、これを簡単に行うことができます。

        String[] columns = new String[]{TABLE_ID, TABLE_IMAGE_PATH, TABLE_CONTACT_NAME,   TABLE_CONTACT_NUMBER, TABLE_CONTACT_ADDRESS};

        Cursor cursor = db.query(ANSWERS_TABLE,
            columns,
            columns[1] + " = ?", new String[]{filePath}, null, null, null);

ここを見てください:SQLiteDataBaseクエリ

于 2013-03-03T10:36:24.290 に答える