java - 在 SQLiteDatabase 中找不到记录

标签 java android sqlite

在我的应用程序中,我为数据库创建一个表,如下所示:

    String action;

    action= "CREATE TABLE ";
    action+=TABLE_LIEUX;
    action+="(Name TEXT NOT NULL PRIMARY KEY);";
    base.execSQL(action);

然后我使用以下命令向该表添加一条记录:

    ContentValues valeur;
    long InsertLine=-10;

    valeur=new ContentValues(1);
    valeur.put("Name","'"+name+"'");
    InsertLine=getWritableDatabase().insert(TABLE_LIEUX,null,valeur);

正如预期的那样,我获得的 InsertLine 值为 1。但是当我尝试搜索添加了以下内容的行时:

            result=(SQLiteCursor)getWritableDatabase().query(TABLE_LIEUX,null,"Name='"+name+"'",null,null,null,null);

我得到的SQLiteCursor结果的长度为-1。当我尝试再次添加该行时,我得到一个 SQLiteException ,它指示该行应该是唯一的(因此,无论搜索结果如何,该行已经在数据库中)。

有什么想法吗?

最佳答案

您必须强制Cursor读取返回的数据(通过调用moveToFirst或类似的方法),然后才能获取游标的记录计数。

此外,使用 ContentValues put 函数时不得引用值;数据库中的值现在包含多余的引号。

关于java - 在 SQLiteDatabase 中找不到记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17628447/

相关文章:

java - 使用 Stream API 按属性查找最接近的值

android - 一次加载android RecyclerView中的所有项目

Python - 如何打印 Sqlite 表

java - 调用其他组件的重绘

java - 使用 Java 将地理位置坐标渲染为图像

java - 将 Android 项目导入 Eclipse 时出错

android - 读取sqlite数据库

android - 如何通过可编程方式将屏幕旋转到横向(或纵向)?

sqlite - Sencha Touch 2 - Ext.device.SQLite.Database 工作?

sqlite - SQLite:如何将默认输入类型设置为 `text`而不是 `textarea`