SELECT语句和WHERE子句的正确语法是什么?

时间:2012-07-17 06:08:41

标签: android sqlite select

我正在尝试探索android,我刚开始使用SQLite数据库。我想知道从表中选择单行的正确语法是什么,我想要选择的行来自使用editText的用户输入的值。提前谢谢。

3 个答案:

答案 0 :(得分: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);

然后迭代结果并根据您自己的标准选择“最佳”匹配。

此外,您应该为要搜索的列创建不区分大小写匹配的表。

答案 1 :(得分:0)

SQLiteDatabase db;

db.rawQuery(“select * from yourTable,其中your_column_name ='users_entered_value'limit 1”,null);

答案 2 :(得分: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包含您触发的查询结果数组。

您可以使用循环检索值。