Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取数据-sqlite和android_Android_Sqlite - Fatal编程技术网

获取数据-sqlite和android

获取数据-sqlite和android,android,sqlite,Android,Sqlite,当我写作时 Cursor c = customersDB.rawQuery("SELECT Name, Street, Block, City FROM " + TABLE_NAME + " where Name == 'VOLKSWAGEN '", null); 它的工作很好 但是: 出错。您需要将变量用单引号括起来,并以分号结尾。

当我写作时

                     Cursor c = customersDB.rawQuery("SELECT Name, Street, Block, City  FROM "    +
                            TABLE_NAME +
                            " where Name == 'VOLKSWAGEN '", null);
它的工作很好

但是:


出错。

您需要将变量用单引号括起来,并以分号结尾。我的建议是使用string.format,这样您的查询字符串

String.format("SELECT Name, Street, Block, City FROM %1$s WHERE Name == '%2$s';", TABLE_NAME, x)

另一种方法是
“从“+TABLE_Name+”中选择名称、街道、街区、城市,其中Name==”“+x+”;”,null)

如果可能,应始终使用参数:

String x="ll";
Cursor c = customersDB.rawQuery(
              "SELECT Name, Street, Block, City FROM " + TABLE_NAME +
              " WHERE Name == ?",
              new String[]{ x });

这可以避免格式问题和攻击。

如果字符串包含引号或控制字符,则此操作将失败。显然,您应该始终清理输入字符串。
String x="ll";
Cursor c = customersDB.rawQuery(
              "SELECT Name, Street, Block, City FROM " + TABLE_NAME +
              " WHERE Name == ?",
              new String[]{ x });