在何处条件下导致android中的Sqlite出错

在何处条件下导致android中的Sqlite出错,android,sqlite,Android,Sqlite,我想从表category中读取男装的category id,所以我这样写查询 String q = "SELECT " + MENU_CAT_ID + " FROM " + CATEGORY_TABLE + " WHERE " + MENU_NAME + " = '" + name + "'"; 但我犯了个错误 android.database.sqlite.SQLiteException: near "s": syntax error (code 1): , while compiling:

我想从表category中读取男装的category id,所以我这样写查询

String q = "SELECT " + MENU_CAT_ID + " FROM " + CATEGORY_TABLE + " WHERE " + MENU_NAME + " = '" + name + "'";
但我犯了个错误

android.database.sqlite.SQLiteException: near "s": syntax error (code 1): , while compiling: SELECT menu_cat_id FROM category_table WHERE menu_name = 'Men's  Wear'

在这种情况下我能做什么?

您需要通过将
男装的单引号加倍来避开
男装的单引号

构建sql字符串时,可以使用
DatabaseUtils.sqlEscapeString(…)
为您转义它,如下所示:

String q = "SELECT " + MENU_CAT_ID + " FROM " + CATEGORY_TABLE 
         + " WHERE " + MENU_NAME + " = " + DatabaseUtils.sqlEscapeString(name);

您需要避开“男装”。我认为更好的方法是使用
database.query()
方法并将参数作为参数传递。。这会有帮助的。