query不能按预期工作

query不能按预期工作

我有这样的一张桌子:

1|EC7599A156DB1913AD9DE9A3A9540624B05683EC|Bar|World's Greatest|http://www.foo.com
2|EC7599A156DB1913AD9DE9A3A9540624B05683EC|Bar|World's Greatest|http://www.foo.com
3|EC7599A156DB1913AD9DE9A3A9540624B05683EC|Bar|World's Greatest|http://www.foo.com


该表的架构为:

CREATE TABLE IRChannels (
    ChannelId INTEGER PRIMARY KEY,
    ChannelHash BLOB NOT NULL,
    ChannelTitle TEXT NOT NULL,
    ChannelDesc TEXT,
    ChannelLink TEXT);


我尝试使用以下代码运行SELECT语句:

if (mReadDatabase != null) {
     String[]   columns = new String[]{COL_CHANNEL_ID};
     String     selection = COL_CHANNEL_HASH + "='" + hash + "'";
     try {
         Cursor cursor = mReadDatabase.query(
             TABLE_CHANNELS_NAME,      // Table Name
             columns,                  // Channel ID
             selection,                // WHERE ChannelHash
             null,                     // = hash
             null,                     // Don't  Group
             null,                     // Don't filter by Groups
             null,                     // Use default Sort Order
             String.valueOf(1));       // LIMIT 1

         if (cursor.moveToFirst()) {
             return cursor;
         } else
             return null;
    }


问题是我在返回的游标中再也看不到任何数据。如果在sqlite3 shell中尝试以下命令,则可以获取数据:

select channelid
from irchannels
where channelhash='EC7599A156DB1913AD9DE9A3A9540624B05683EC'
limit 1


我可能会缺少什么?

更新:
我尝试将代码更改为使用原始查询,就像这样,仍然没有区别:

if (mReadDatabase != null) {
    String        selection = COL_CHANNEL_HASH + "='" + hash + "'";
    final String  rawQuery = "SELECT " + COL_CHANNEL_ID +
                " FROM " + TABLE_CHANNELS_NAME + " " +
                " WHERE " + selection +
                " LIMIT 1;";
        Cursor cursor = mReadDatabase.rawQuery(rawQuery, null);
}

最佳答案

尝试这个,

String[]   columns = new String[]{COL_CHANNEL_ID};

Cursor cursor = mReadDatabase.query(
             TABLE_CHANNELS_NAME,      // Table Name
             columns,                  // Channel ID
             "column_name=?",                // WHERE ChannelHash
             new String[]{hash},                     // = hash
             null,                     // Don't  Group
             null,                     // Don't filter by Groups
             null,                     // Use default Sort Order
             String.valueOf(1));       // LIMIT 1

关于android - sqlite:SQLiteDase.query不能按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8653540/

10-10 16:06