0

私はアンドロイドを探求しようとしていますが、SQLiteデータベースを使い始めました。テーブルから単一の行を選択するための正しい構文は何でしょうか。ここで、選択する行は、を使用してユーザーから入力された値からのものeditTextです。前もって感謝します。

4

3 に答える 3

1

上記の両方の回答に同意しません。ユーザーが次のクエリを入力するとどうなりますか。

Bobby Tables'; drop table yourTable;

参照: http://xkcd.com/327/

代わりにこれを行うべきだと思います:

String query = "select * from TABLE_NAME WHERE column_name=?";
String[] selection = new String[1];
selection[0] = users_entered_value;
Cursor c = db.rawQuery(query, selection);

ETA: 実際、考えれば考えるほど、あなたは間違った方向に進んでいると思います。アプリが、ユーザーが入力した任意の文字列に対して一意の一致を 1 つだけ返すデータベース クエリに依存している場合、多くの場合、アプリが壊れる可能性があります。

おそらくあなたがすべきことは次のようなものです:

String query = "select * from TABLE_NAME WHERE column_name LIKE ?";
String[] selection = new String[1];
selection[0] = "%" + users_entered_value + "%";
Cursor c = db.rawQuery(query, selection);

次に、結果を反復処理し、独自の基準に従って「最適な」一致を選択します。

また、検索する列に対して、大文字と小文字を区別しない一致でテーブルを作成する必要があります。

于 2012-07-17T15:05:05.187 に答える
0
SQLiteDatabase db; 

// make connection to your database ;

Cursor c = null ;

String SQL = "select * from TABLE_NAME where column_name='VALUE'";

c = db.rawQuery(SQL);

cには、実行したクエリの結果配列が含まれます。

ループを使用して値を取得できます。

于 2012-07-17T13:43:37.433 に答える
0

SQLite データベース データベース;

db.rawQuery("select * from yourTable where your_column_name = 'users_entered_value' limit 1", null);

于 2012-07-17T12:39:05.507 に答える