【问题标题】:SQLite select query with where cluase带有 where 子句的 SQLite 选择查询
【发布时间】:2012-06-24 18:00:02
【问题描述】:

SQLite select 语句我有以下函数

public Boolean itemFound(String cartId,Long ItemId){
        SQLiteDatabase db = this.getReadableDatabase();
        Log.d("search",cartId+"--"+ItemId);

        try {
            String where = COL_ITEM_CART_ID+"='"+cartId+"' and "+COL_ITEM_ID+" ="+ ItemId+"";
            Log.d("where===============", where);
            String columns[] = new String[] { COL_ITEM_ID,COL_ITEM_NAME, COL_ITEM_PRICE, COL_ITEM_ADDDATE,COL_ITEM_QUANTITY,COL_ITEM_CART_ID }; // > null means * (all)
            Cursor c = db.query(TABLE_NAME,
                                columns ,
                                COL_ITEM_CART_ID+"='?' and "+ COL_ITEM_ID + "=?"  ,
                                new String[]{cartId,String.valueOf(ItemId)}, 
                                null, 
                                null, 
                                COL_ITEM_ADDDATE+" desc");


            int numRows = c.getCount();

            c.close();
            db.close();
            if(numRows>0)
                return true;
            else
                return false;
        } catch (SQLException e) {
            db.close();
            return false;
        }
    }

参数在哪里:

  • Long type itemId= 9882889921
  • String type cartId = ca1745ef-24eb-4da8-a1ea-9650d78ba5c0

尽管对这些数据进行了重新编码。返回的行是 0 ,为什么?

【问题讨论】:

    标签: android select sqlite where


    【解决方案1】:

    您已将 ? 括在单引号中,请更改此内容:

    COL_ITEM_CART_ID+"='?' and "+ COL_ITEM_ID + "=?"
    

    上面的行试图将COL_ITEM_CART_ID 与问号匹配,将其更改为:

    COL_ITEM_CART_ID + "=? and "+ COL_ITEM_ID + "=?"
    

    【讨论】:

      【解决方案2】:

      query 方法将为您清理您的数据输入,因此当您使用撇号包装?s 时,撇号将成为输入字符串本身的一部分。这导致您的查询返回 0 行。

      要解决此问题,请将所有 '?' 实例更改为 ?

      【讨论】:

        猜你喜欢
        • 2011-07-05
        • 2012-01-23
        • 2019-08-27
        • 1970-01-01
        • 1970-01-01
        • 2011-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多