【问题标题】:SQLite WHERE clause not working with VARCHARSQLite WHERE 子句不适用于 VARCHAR
【发布时间】:2016-02-07 19:55:53
【问题描述】:
mydb.execSQL("CREATE TABLE IF NOT EXISTS customer " + "  ( id INT(10) NOT NULL , name_surname VARCHAR (50) NOT NULL , card INT(10) NOT NULL , PRIMARY KEY(id) );");
mydb.execSQL("INSERT INTO customer (id, name_surname , card ) VALUES ('194', 'aaa' , '21' );");

Cursor cursor = ajcinemaDB.rawQuery("SELECT * FROM customer WHERE name_surname=? " , new String[] {"aaa"});


    int idColumn = cursor.getColumnIndex("id");
    int name_surnameColumn = cursor.getColumnIndex("name_surname");
    int cardColumn = cursor.getColumnIndex("card");


    cursor.moveToFirst();


    if(cursor != null && (cursor.getCount() > 0)){

        do {


            String id = cursor.getString(idColumn);
            String name_surname = cursor.getString(name_surnameColumn);
            String card = cursor.getString(cardColumn);

            custinfo = custinfo  + card + "\n";


        }while(cursor.moveToNext());

    } else {
        Toast.makeText(this, "No Results ", Toast.LENGTH_SHORT).show();
    }

为什么这个 where 子句什么也不返回?

此特定子句适用于 id (int),但不适用于 name_surname(varchar)。

我也尝试过常规和原始查询,结果相同。

有什么想法吗?

【问题讨论】:

  • 它不是重复的,它是专门关于 rawQuery 和 VARCHAR 的。
  • 是否与 VARCHAR 相关。查询是一个查询,使用常规查询方法而不是 rawQuery 可能会产生正确的结果
  • 我尝试了常规查询,结果相同。有什么想法吗?
  • 那么您的数据库并没有真正包含该记录,或者您没有正确读取游标的结果

标签: android mysql sqlite where-clause


【解决方案1】:

尝试以下 rawQuery 语句:

  1. Cursor cursor = ajcinemaDB.rawQuery("SELECT id, name_surname, card FROM customer WHERE name_surname=? " , new String[] {"aaa"});

  2. Cursor cursor = ajcinemaDB.rawQuery("SELECT * FROM customer WHERE name_surname='aaa'",null);

【讨论】:

  • 谢谢,虽然这无关紧要。显然问题是数据库架构更改未被注意到。
猜你喜欢
  • 2014-08-14
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 2013-01-06
  • 1970-01-01
相关资源
最近更新 更多