2017-01-14 3 views
-1

Это мой databaseКак проверить, если запись уже существует в SQLite таблице

public void DBCreate() { 
    SQLITEDATABASE = getActivity().openOrCreateDatabase("FavoritesDB", Context.MODE_PRIVATE, null); 
    SQLITEDATABASE.execSQL("CREATE TABLE IF NOT EXISTS favorite(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, word VARCHAR, meaning VARCHAR);"); 
} 

Это, как я создаю новые строки:

String query = "INSERT INTO favorite (word,meaning) VALUES('"+wordd+"', '"+mean+"');"; 
Cursor c=SQLITEDATABASE.rawQuery("SELECT * FROM favorite WHERE id=?", null); 
if (c.moveToFirst()) 
{  
     Toast.makeText(getActivity(),"inserted",Toast.LENGTH_LONG).show(); 
        SQLITEDATABASE.execSQL(query); 
} 
else 
{ 
     Toast.makeText(getActivity(),"exists",Toast.LENGTH_LONG).show(); 
} 

Мой вопрос заключается в том, что, как проверить данные перед вставкой значение в таблицу?

ответ

0

перед вставкой выполнить запрос выбора и проверить размер cursor, если он 0, чем запись уже существует.

Я не уверен, почему вы проходя null в запросе

Cursor c=SQLITEDATABASE.rawQuery("SELECT * FROM favorite WHERE id=?", null); 

вместо

Cursor c=SQLITEDATABASE.rawQuery("SELECT * FROM favorite WHERE id=?", new String[]{"your id1"}); 

или , если вы хотите, чтобы выбрать все записи, то

Cursor c=SQLITEDATABASE.rawQuery("SELECT * FROM favorite"); 
0

попробовать это код:

Cursor c = SQLITEDATABASE.rawQuery("SELECT * FROM favorite WHERE id=?", new String[]{"your_id_name"}); 
    Log("Cursor Count : " + c.getCount()); 
       if(c.getCount()>0) 
       { 
       Toast.makeText(getActivity(),"exists",Toast.LENGTH_LONG).show(); 

       } 
       else 
       { 
        Toast.makeText(getActivity(),"inserted",Toast.LENGTH_LONG).show(); 
        SQLITEDATABASE.execSQL(query); 
       } 

И ваш выбор запрос должен выглядеть следующим образом:

String sql ="SELECT PID FROM "+TableName+" WHERE PID="+pidValue; 
+0

, как я могу получить pidValue в моем коде –

+0

'общественного недействительными DBCreate (INT pidValue) ' –

+0

pidValue - это особое значение, которое вы проверяете в строке ... если оно уже вставлено. – rafsanahmad007

0

Варианты:

1) Если вы не хотите повторить какой-либо из значений в столбце, установите значение столбца в CREATE метод «УНИКАЛЬНЫЙ» или даже «ПЕРВИЧНЫЙ КЛЮЧ», если содержание должно быть первичным ключом для распознавания. Таким образом, вы, возможно, избегаете повторений без проверки.

2) Петля через таблицу (я тоже студент, так что я надеюсь, что работает хорошо):

Cursor c = SQLITEDATABASE.rawQuery("SELECT * FROM favorite", null); 

    if (c.getCount() > 0) { 

     String searchString = "some word"; // word you are about to insert 

     while (c.moveToNext()) { 

      c.moveToFirst(); 
      int colIndex = c.getColumnIndex("word"); 
      String wordInCurrentRow = c.getString(colIndex); 

      if (!(wordInCurrentRow.equals(searchString))) { 
       // insert method 
      } else { 
       // do nothing 
       Log.d("word already existing", "nothing to insert"); 
      } 
     } 
    } 
Смежные вопросы