2011-12-13 6 views
0

私のアプリでは、自分のrssニュースをデータベースに保存しています。ユーザーがインターネットで私のニュース活動に入ると、私はcreateEnty()を呼び出します。Androidデータベースアップデート

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 
    } 

} 

そして、ユーザがインターネットなしでニュース活動に入ったときに私は()のgetDataの呼び出しM(HotOrNot中)メソッド

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

public Cursor getData() 
{ 

String[] columns =new String[]{DBHelper.ROWID, DBHelper.TITLE , DBHelper.AGONISTIKI, DBHelper.SKOR, DBHelper.GIPEDO, DBHelper.DATE, DBHelper.GOALA, DBHelper.GOALB, DBHelper.DESCRIPTION }; 
Cursor c=ourDatabase.query(DBHelper.DATABASE_TABLE, columns, null, null, null, null, null); 
return c; 
} 

私の問題は、ユーザーがインターネットに接続してニュースの活動に入るたびに、データベースが初めての12件のニュースがある場合、それらが書いていることを意味beginning.Iから再びすべてのデータの書き込みを行うということですもう一度12のニュースがあり、同じ12のニュースがある場合、アプリケーションはそれらを書き換え、私はデータベースに12のエントリを持っていますが、私は持っていない12を持っています。私のデータベースを削除する方法を探していますユーザーがインターネットを持っていて、それを作り直すたびに、または毎回データベースを書き直すたびに... ....ヘルプをして、ここに数日積み重ねてきたのです... :)

@Guillaumeこれを試していますが、データベース

HotOrNot entry = new HotOrNot(agones.this); 
      agones.this.deleteDatabase(DBHelper.DATABASE_NAME); 

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

答えて

0

インターネット接続アクションでスクリプトから削除*を書くことができると思います。

削除*データベース内のエントリをクリアしますが、テーブルは削除されません。それで、次のアクションで、あなたが望むものを挿入することができます。

+0

私はこの公開ボイドdeleteTable(SQLiteDatabaseデシベル){ db.delete(DBHelper.DATABASE_TABLE、NULL、NULL)を試みました。 }しかし、それは動作していません... –

+0

私は個人的にあなたの動機がデータをリフレッシュしているときに "削除"データベースは良い選択肢ではないと感じています。テーブルスキーマに変更はないので、データベースの "削除"は意味をなさない。 – kosa

+0

@ user1094597 –

0

createEntryメソッドの上に追加してください。

context.deleteDatabase(DB_NAME); 

contextがあなたの活動することができます)

これは、実際のDBファイルを削除します。したがって、次回にgetReadableDatabase()(またはgetWritableDatabase())を実行すると、再作成されます。

EDIT:何か等:

// Do that when an internet connection is found: 
agones.this.deleteDatabase(DB_NAME); 
HotOrNot entry = new HotOrNot(agones.this); 
entry.open(); 
... 
+0

私はagones.deleteDatabase(DBHelper.DATABASE_NAME)を使用できません.. –

+0

ContextWrapper型から非静的メソッドのdeleteDatabase(String)への静的参照を作成できません –

+0

"agones"はアクティビティクラスですか? agones.this.deleteDatabase – Guillaume

関連する問題