繁体   English   中英

Android SQLite查询插入后不返回数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM