Java Android Sqlite:检查表中是否存在行

Java Android Sqlite:检查表中是否存在行,java,android,sql,sqlite,Java,Android,Sql,Sqlite,我有一个字符串数组,需要在插入它们之前检查它们是否存在于表中,以避免重复。什么是SQL查询,如何替换以下值?:) 表名:产品图片 数据库名称:产品数据库 我理解此声明将在以下情况下起作用: "SELECT * FROM ' + product_pics + ' WHERE PID=' + pid +'" 如果产品存在或不存在,我如何正确地设置格式以使方法返回?就像 Cursor cursor = null; String sql ="SELECT PID FROM "+TableName+

我有一个字符串数组,需要在插入它们之前检查它们是否存在于表中,以避免重复。什么是SQL查询,如何替换以下值?:)

表名:产品图片

数据库名称:产品数据库

我理解此声明将在以下情况下起作用:

"SELECT * FROM ' + product_pics + ' WHERE PID=' + pid +'"
如果产品存在或不存在,我如何正确地设置格式以使方法返回?

就像

 Cursor cursor = null;
 String sql ="SELECT PID FROM "+TableName+" WHERE PID="+pidValue; 
 cursor= db.rawQuery(sql,null);
 Log("Cursor Count : " + cursor.getCount());

 if(cursor.getCount()>0){
  //PID Found
 }else{
 //PID Not Found 
 }
 cursor.close();

使用SELECT EXIST仅将结果限制为1或0,限制为1使查询执行更快:

fun exists(): Boolean {
    var sql = "SELECT EXISTS (SELECT * FROM $tableName WHERE $someColumn 
        = $someValue LIMIT 1)"
    val cursor = db?.rawQuery(sql, null)
    cursor?.moveToFirst()
    return if (cursor?.getInt(0) == 1) {
        cursor?.close()
       true
    } else {
      cursor?.close()
      false
    }

}

不要忘记cursor.close()和db.close()可能的重复项
 Cursor cursor = null;
 String sql ="SELECT PID FROM "+TableName+" WHERE PID="+pidValue; 
 cursor= db.rawQuery(sql,null);
 Log("Cursor Count : " + cursor.getCount());

 if(cursor.getCount()>0){
  //PID Found
 }else{
 //PID Not Found 
 }
 cursor.close();
fun exists(): Boolean {
    var sql = "SELECT EXISTS (SELECT * FROM $tableName WHERE $someColumn 
        = $someValue LIMIT 1)"
    val cursor = db?.rawQuery(sql, null)
    cursor?.moveToFirst()
    return if (cursor?.getInt(0) == 1) {
        cursor?.close()
       true
    } else {
      cursor?.close()
      false
    }