0

私が書くとき

                     Cursor c = customersDB.rawQuery("SELECT Name, Street, Block, City  FROM "    +
                            TABLE_NAME +
                            " where Name == 'VOLKSWAGEN '", null);

その仕事のグーグル。

しかし:

String x="ll";



                     Cursor c = customersDB.rawQuery("SELECT Name, Street, Block, City  FROM "    +
                            TABLE_NAME +
                            " where Name == "+x, null);

エラーを起こします。

4

2 に答える 2

0

可能であれば、常にパラメータを使用する必要があります。

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

これにより、フォーマットの問題とSQLインジェクション攻撃の両方が回避されます。

于 2012-10-07T09:51:55.040 に答える
0

変数を一重引用符で囲み、セミコロンで終了する必要があります。私のアドバイスは、 string.format を使用して、クエリ文字列が次のようになるようにすることです

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

他の方法は"SELECT Name, Street, Block, City FROM " + TABLE_NAME + "where Name == '" + x + "';", null);

于 2012-10-07T00:41:29.163 に答える