[英]Android SQLite query not returning data after insert
我試圖將數據插入到SQLite數據庫表中,然后在同一調用中立即從select中返回結果,但是沒有返回數據。
這是SQL語句:
INSERT INTO Items (Name, DefaultExpirationIntervalId) VALUES ('Item', -1);
SELECT ItemId as '_id', Name, DefaultExpirationIntervalId FROM Items WHERE Name = 'Item';
這是進行SQL調用的代碼:
Boolean isReadOnly = getSQLiteDatabase().isReadOnly();
// Make sure we can add data to the database
if (!isReadOnly)
{
// Add the item to the database and then use the result to create a new item
Cursor cursor = getSQLiteDatabase().rawQuery(query, null);
if (null != cursor)
{
cursor.moveToFirst();
if (!cursor.isAfterLast())
item = new Item(cursor);
}
}
rawQuery調用返回一個游標(不為null),但它為空。
我通過亞行驗證是否已插入記錄。 我什至通過ADB Shell在sqlite3中運行了這個確切的查詢,並且該項目已按預期插入並返回。 我也嘗試過刪除選擇並在另一個rawQuery調用中檢索該項目,但這也不起作用。
有人知道會發生什么嗎? 我正在通過單元測試運行此代碼,該單元測試在每次測試運行期間都會創建和銷毀數據庫。
rawQuery僅用於SELECT語句。
對於INSERT,DELETE和UPDATE ,必須改用execSQL
因此,首先,您必須使用execSQL進行INSERT,然后對您的SELECT使用rawQuery。
萬一你問為什么...
SELECT是一個查詢,而INSERT,DELETE和UPDATE是命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.