我正在尝试探索 android,我刚开始使用 SQLite 数据库。我想知道从表中选择单行的正确语法是什么,我要选择的行来自用户使用editText
. 提前致谢。
问问题
1579 次
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:实际上,我越想越觉得你走错了方向。如果您的应用程序依赖于一个数据库查询,它只返回一个与用户输入的任意字符串的唯一匹配项,那么它可能会在很多时候被破坏。
你可能应该做的是这样的事情:
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 contains your result array of query you fired.
You can retrieve values using loop.
于 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 回答