2017-01-14 2 views
-1

Das ist mein databaseWie kann man überprüfen, ob Datensatz bereits in SQLite Tabelle existiert

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);"); 
} 

Dies ist, wie ich neue Zeilen erschaffe:

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(); 
} 

Meine Frage ist, dass, wie die Daten zu prüfen, vor dem Einsetzen Wert in Tabelle?

Antwort

0

vor dem Einfügen führen Sie die Abfrage aus und überprüfen Sie die cursor Größe, wenn sie> 0 ist als der Datensatz bereits existiert.

Ich bin nicht sicher, warum sind Sie null in Ihrer Anfrage

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

statt

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

oder vorbei, wenn Sie alle Datensätze auswählen möchten dann

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

try this Code:

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); 
       } 

Und Ihre SELECT-Abfrage sollte wie folgt aussehen:

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

, wie ich kann pidValue in meinem Code –

+0

'public void DBCreate (int pidValue bekommen) ' –

+0

pidValue ist der bestimmte Wert, den Sie in einer Zeile überprüfen ... wenn es bereits eingefügt wird .. – rafsanahmad007

0

Optionen:

1) Wenn Sie nicht wollen, einen der Werte in einer Spalte wiederholen, in der festgelegt, die Spalte Einstellung CREATE-Methode zu "UNIQUE" oder sogar "PRIMARY KEY", wenn der Inhalt der Primärschlüssel zum Erkennen sein soll. So können Sie möglicherweise Wiederholungen vermeiden, ohne dies überprüfen zu müssen.

2) Schleife durch den Tisch (ich bin ein Student auch, so hoffe ich, dass gut funktioniert):

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"); 
      } 
     } 
    } 
Verwandte Themen