1

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

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 回答