我有这样的一张桌子:
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/