2012-01-20 12 views
0

インターネットからのデータを保存するデータベースを作成しました。インターネットに接続すると、createEntryが呼び出され、データがデータベースに書き込まれます。私の問題は、使用がインターネットを持っている2回目、新しいデータは古いものを上回らないが、新しいエントリを作成するということです。ユーザーがインターネットに接続している2回目からデータベースを更新することが解決策だと思いますので、毎回同じ数のデータを持つことができます。私の問題は、私はそれをやる方法を知らないということです。これはSQLiteとデータベースで初めての試みです。データベースを更新するには

これは私のcreateEntryです:

public void createEntry(String title, String getagonistiki, String getskor, 
      String getgipedo, String date, String getgoal1, String getgoal2, 
      String teliko_skor) { 
     // TODO Auto-generated method stub 
     ContentValues cv = new ContentValues(); 
     cv.put(DBHelper.TITLE, title); 
     cv.put(DBHelper.AGONISTIKI, getagonistiki); 
     cv.put(DBHelper.SKOR, getskor); 
     cv.put(DBHelper.GIPEDO, getgipedo); 
     cv.put(DBHelper.DATE, date); 
     cv.put(DBHelper.GOALA, getgoal1); 
     cv.put(DBHelper.GOALB, getgoal2); 
     cv.put(DBHelper.DESCRIPTION, teliko_skor); 

     try { 
      ourDatabase.insert("osfpDB", null, cv); 
     } // ourDatabase.update("osfpDB",cv,DBHelper.ROWID,null); 

     catch (Exception e) { 
      Log.e("DB ERROR ON .INSERT", e.toString()); // prints the error 
                 // message to the log 
      e.printStackTrace(); // prints the stack trace to the log 
     } 
    } 

、これは、インターネット接続があるときイムが呼び出すものです:

HotOrNot entry = new HotOrNot(agones.this); 

      entry.open(); 

      entry.createEntry(msg.getTitle(), msg.getagonistiki(), msg 
        .getskor(), msg.getgipedo(), msg.getDate(),msg.getgoal1(),msg.getgoal2(),msg.getDescription()); 

      // entry.update(msg.getTitle(),msg.getagonistiki(),msg.getskor(),msg.getgipedo(),msg.getDate()); 

      entry.close(); 

答えて

3

この機能を試してみてください::

public void createEntry(String title, String getagonistiki, String getskor, String getgipedo, String date, String getgoal1, String getgoal2, 
     String teliko_skor) { 

    Cursor c = null; 
    boolean isInserted = false; 
    try {  
     c = ourDatabase.rawQuery("select "+DBHelper.TITLE+" from osfpDB", null); 
     if(c != null){ 
      for(int i=0; i<c.getCount();i++){ 
       c.moveToPosition(i); 
       if(c.getString(0).equals(title)){ 
        Log.e("same title text means duplicate :",title+" : "+c.getString(0)); 
        isInserted = true; 
        break; 
       } 
      } 
     } 

     ContentValues cv = new ContentValues(); 
     cv.put(DBHelper.TITLE, title); 
     cv.put(DBHelper.AGONISTIKI, getagonistiki); 
     cv.put(DBHelper.SKOR, getskor); 
     cv.put(DBHelper.GIPEDO, getgipedo); 
     cv.put(DBHelper.DATE, date); 
     cv.put(DBHelper.GOALA, getgoal1); 
     cv.put(DBHelper.GOALB, getgoal2); 
     cv.put(DBHelper.DESCRIPTION, teliko_skor); 

     Log.e("ourDatabase", "" + ourDatabase); 

     if (ourDatabase == null) { 
      ourDatabase = getWritableDatabase(); 
     } 

     if(isInserted){ 
      ourDatabase.update("osfpDB", cv, null, null); 
     }else{ 
      ourDatabase.insert("osfpDB", null, cv); 
     } 
    } catch (Exception e) { 
     Log.e("Exception in insert :", e.toString()); 
     e.printStackTrace(); 
    } 
} 


あなたのあなたは重複したレコードのみを破棄したいと気付いたのですが、
レコードを更新する必要はありませんし、コードの機能を変更しないでください。プライマリキーをテーブル 'title'カラムに設定してください。 ..(他の質問があれば教えてください)

ref:Naming conventions

関連する問題