Java 插入前如何检查行是否存在?

Java 插入前如何检查行是否存在?,java,android,database,sqlite,Java,Android,Database,Sqlite,我想将记录插入sqllite数据库,但在插入之前,我必须检查记录是否存在 SQLiteDatabase db = this.getReadableDatabase(); String selectQuery = "SELECT * FROM " + TABLE_TEAM + " WHERE " + TEAM_TABLE_NAME + " = " + name+";"; Log.e(LOG, selectQuery); Cursor c =

我想将记录插入sqllite数据库,但在插入之前,我必须检查记录是否存在

SQLiteDatabase db = this.getReadableDatabase();

    String selectQuery = "SELECT  * FROM " + TABLE_TEAM + " WHERE "
            + TEAM_TABLE_NAME + " = " + name+";";

    Log.e(LOG, selectQuery);

    Cursor c = db.rawQuery(selectQuery, null);

    if (c != null) {
         return true;
    }
    return false;
我使用了这段代码,但仍然说没有这样的列,并停止了工作,尽管记录存在

SQLiteDatabase db = this.getReadableDatabase();

    String selectQuery = "SELECT  * FROM " + TABLE_TEAM + " WHERE "
            + TEAM_TABLE_NAME + " = " + name+";";

    Log.e(LOG, selectQuery);

    Cursor c = db.rawQuery(selectQuery, null);

    if (c != null) {
         return true;
    }
    return false;

这是使用
rawQuery()
的推荐方法:

因此,您可以将
name
作为参数传递给查询,从而避免了。

在代码中,您只检查
光标
对象是否为
null
,而不检查它是否包含正确操作的行。
因此,返回
getCount()>0
的结果,如下所示:

return c.getCount() > 0;
如果表中已存在名称,则返回
true
至于
没有这样的列
错误,这是不同的
首先确保
TEAM\u TABLE\u NAME
是正确的列名称,如果是,则可能对未反映到数据库中的列名称进行了更改

因此,请从设备上卸载应用程序,以便删除数据库,然后重新运行以使用列的新名称重新创建数据库。

如果列
TEAM\u TABLE\u NAME
是唯一的或主键,只需使用
插入或忽略