Android Sqlite: проверьте, существует ли строка в таблице
У меня есть массив строк, которые необходимо проверить, если существует в таблице, прежде чем вставлять их, чтобы избежать дубликатов. Что такое запрос SQL и как мне заменить на него следующие значения?:)
ArrayList<Product> NewProducts= new ArrayList<Product>();
Моя модель продукта:
public class Product {
public Product()
{
}
public String PID = "pid";
public String getPID() {
return PID;
}
public void setPID(String pID) {
PID = pID;
}
public String getNAME() {
return NAME;
}
public void setNAME(String nAME) {
NAME = nAME;
}
public String PID = "pid";
public String NAME = "name";
}
Название таблицы: product_pics
Имя базы данных: product_db
Я понимаю, что это утверждение будет работать:
"SELECT * FROM ' + product_pics + ' WHERE PID=' + pid +'"
Как правильно отформатировать это так, чтобы метод возвращал, если продукт существует или нет?
2 ответа
Решение
Просто нравится
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, а LIMIT 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
}
}