1

json サービスから取得した 2 つの変数を、アプリにあるデータベースと比較しようとしています。私はそれをハードコーディングしようとしましたが、うまくいきました

Statement st = tmsDB.createStatement(
    "SELECT * FROM ObjectTexts WHERE programID ='AAA' AND objName ='BBB'");

しかし、私がこれをやろうとしたとき `

Statement st = tmsDB.createStatement(
    "SELECT * FROM ObjectTexts WHERE programID="+ JsonProgramID  +"AND objName ="+JsonobjName);

うまくいきませんでした。

何か案は?

4

2 に答える 2

7
FROM ObjectTexts WHERE programID='"+ JsonProgramID  +"' AND objName =' "+JsonobjName +"'"

ハードコーディングされたクエリを確認すると、パラメーターは一重引用符で囲まれていますが、動的なものには一重引用符がありません。

SQL では、すべての String/Varchar を一重引用符で囲む必要があります。

注: これらの生のクエリは、SQL インジェクションに対して非常に脆弱です。

BlackBerry API は、通常の作成、準備、バインド、実行のセマンティクスをサポートしています。

Statement st = tmsDB.createStatement( "SELECT * FROM ObjectTexts WHERE programID=? AND objName = ?");
st.prepare();
st.bind(1, JasonProgramID);
st.bind(2, JsonobjName);
Cursor c = st.getCursor();
...
于 2012-07-17T15:18:47.817 に答える
3

スペースと一重引用符が欠落しているようです。これを試して:

 Statement st = tmsDB.createStatement("SELECT * FROM ObjectTexts WHERE programID= '"+ JsonProgramID  +"' AND objName = '"+JsonobjName+"'");
于 2012-07-17T15:20:13.947 に答える