Android:数据库处理程序SQLiteException

时间:2014-04-03 08:45:33

标签: java android database sqlite

大家好我在数据库处理程序类中有这个方法,这个类的作用是从product表返回产品的ID。但是,我收到这个sqliteexception,我不知道为什么。 请指教,谢谢。

    private static final String TABLE_PRODUCT = "product"
    private static final String KEY_PRODUCTNAME = "productname";

public String getProductId(String productName) {
   String selectQuery = "SELECT productid FROM " + TABLE_PRODUCT+ " WHERE " +KEY_PRODUCTNAME +" = " + productName;

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    String productid = cursor.toString();
    cursor.close();
    db.close();

    return productid;
}

错误:

E/AndroidRuntime(1884): FATAL EXCEPTION: main
E/AndroidRuntime(1884): android.database.sqlite.SQLiteException: unrecognized token: "Bluedress34.50" (code 1): , while compiling: SELECT productid FROM product WHERE productname = "Bluedress34.50"

我的活动课程:

add.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {

    DatabaseHandler db = new DatabaseHandler(getApplicationContext());

                    String productname = pname.getText().toString();
                    String productQTY = pqty.getText().toString();

                    String productnameid = db.getUProductId(productname);


                    JSONObject json = userFunction.addSales(productnameid, productQty);

}

}

我的用户功能类:

public JSONObject addSales(productnameid, productQty){
    // Building Parameters

    List<NameValuePair> paramsfile = new ArrayList();

    paramsfile.add(new BasicNameValuePair("productnameid", productnameid));
    paramsfile.add(new BasicNameValuePair("productQty", productQty));


    JSONObject jsonfileName  =  jsonParser.getJSONFromUrl(addFileURL, paramsfile);

   Log.e("JSON", jsonfileName.toString());
    return jsonfileName;
}

4 个答案:

答案 0 :(得分:5)

由于产品名称采用字符串格式,因此请在查询中使用',如下所示

String selectQuery = "SELECT productid FROM " + TABLE_PRODUCT 
      + " WHERE " + KEY_PRODUCTNAME +" ='" + productName  +"'";

答案 1 :(得分:4)

我宁愿写下来:

String selectQuery =
    "SELECT productid FROM " + TABLE_PRODUCT+ " WHERE " + KEY_PRODUCTNAME + " =  ?";
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, new String[]{productName});

答案 2 :(得分:1)

数据库事务中的任何字符串值都应仅在'单引号中访问。

只需在单引号'中写下您的商品价值,如下所示: “='”+ productName +“'”;

查询:

"SELECT productid FROM " + TABLE_PRODUCT+ " WHERE " +KEY_PRODUCTNAME +" = '" + productName +"'";

答案 3 :(得分:1)

这只是一个简单的错误。你忘了添加如下单引号:

String selectQuery = "SELECT productid FROM " + TABLE_PRODUCT+ " WHERE " +KEY_PRODUCTNAME +" = '" + productName +"'";