Sql Where Statement

S E*_*S E 1 sql blackberry java-me

我正在尝试将我从json服务获得的两个变量与我在应用程序中拥有的数据库进行比较.我试图对其进行硬编码并且有效

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

但当我试图这样做时

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

它不起作用.

有任何想法吗?

kos*_*osa 7

FROM ObjectTexts WHERE programID='"+ JsonProgramID  +"' AND objName =' "+JsonobjName +"'"
Run Code Online (Sandbox Code Playgroud)

如果您观察到硬编码查询,则参数在单引号内,但动态缺少单引号.

在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();
...
Run Code Online (Sandbox Code Playgroud)

  • @ X-Zero:我不太了解黑莓API,这就是我没有提出的原因.在android中你需要这样做http://android-er.blogspot.com/2011/06/simple-example-using-androids-sqlite_02.html (2认同)
  • @thinksteep很好的答案,我冒昧地编辑了一些BlackBerry API代码.希望你不介意. (2认同)