2011-12-04 10 views
0

私はrss.My問題から得たいくつかのニュースをデータベースに入れてしまいました。私は新しいフィードを古いものに上書きしたいのです。毎回データベースに10個のニュースを入れたい更新時にデータベースを上書きする方法

public void onUpgrade (SQLiteDatabase db,int oldVersion, int newVersion){ 
    android.util.Log.w("Constants", 
      "Upgrading database, which will destroy all data"); 
    db.execSQL("DROP TABLE IF EXISTS myDB"); 
    onCreate(db); 

} 
:?今、あなたは、このように現在使用しONUPGRADEイムある私はそれを行うのに役立ち、私は解決策が onUpgrade method.Couldでなければならないことが判明し、ネットを検索..私は10以上を更新するたびに持つ

イム

編集

public void createEntry(String string,String string2,String string3,String string4,String string5){ 
    ContentValues cv=new ContentValues(); 
    cv.put(DBHelper.TITLE, string); 
    cv.put(DBHelper.AGONISTIKI, string2); 
    cv.put(DBHelper.SKOR, string3); 
    cv.put(DBHelper.GIPEDO, string4); 
    cv.put(DBHelper.DATE, string5); 
    try 
    { 
     ourDatabase.insert("osfpDB",null,cv); 
    } 
    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 
    } 

} 
public void update(String string,String string2,String string3,String string4,String string5){ 
    ContentValues cv=new ContentValues(); 
    cv.put(DBHelper.TITLE, string); 
    cv.put(DBHelper.AGONISTIKI, string2); 
    cv.put(DBHelper.SKOR, string3); 
    cv.put(DBHelper.GIPEDO, string4); 
    cv.put(DBHelper.DATE, string5); 
    try 
    { 
     ourDatabase.update("osfpDB",cv,DBHelper.ROWID,null); 
    } 
    catch(Exception e) 
    { 
     Log.e("DB ERROR ON .UPDATE", e.toString()); // prints the error message to the log 
     e.printStackTrace(); // prints the stack trace to the log 
    } 

} 

ArrayList<HashMap<String, String>> List_agones = new ArrayList<HashMap<String, String>>(messages.size()); 
      for (Message2 msg : messages){ 

       des.add(msg.getDescription());//keimeno 
       SK.add(msg.getskor()); 
       GOALA.add(msg.getgoal1()); 
       GOALB.add(msg.getgoal2()); 
       TITLES.add(msg.getTitle()); 
       AGONISTIKI.add(msg.getagonistiki()); 


       HashMap<String, String> map = new HashMap<String, String>(); 
        map.put("agon", msg.getagonistiki()); 

       map.put("name", msg.getTitle()); 
       map.put("date", msg.getDate()); 
       map.put("gip", msg.getgipedo()); 

       map.put("SK", msg.getskor()); 

       List_agones.add(map); 

       ListAdapter mSchedule = new SimpleAdapter(this, List_agones, R.layout.agonesrow, 
          new String[] {"agon","name", "date","gip", "SK"}, new int[] {R.id.TextView00,R.id.TextView01, R.id.TextView02, R.id.TextView04, R.id.TextView03}); 
       this.setListAdapter(mSchedule); 


       //grafei stin vasi dedomenwn 
       //------------------------- 
       HotOrNot entry=new HotOrNot(agones.this); 

        entry.open(); 
        if(map== null){ 

         Toast.makeText(agones.this, "1", 
           Toast.LENGTH_SHORT).show(); 
         entry.createEntry(msg.getTitle(),msg.getagonistiki(),msg.getskor(),msg.getgipedo(),msg.getDate()); 
        }else{ 

         Toast.makeText(agones.this, "2", 
           Toast.LENGTH_SHORT).show(); 
         entry.update(msg.getTitle(),msg.getagonistiki(),msg.getskor(),msg.getgipedo(),msg.getDate()); 
        } 

        entry.close(); 
       //---------------------------------------- 

答えて

0

アプリケーションとデータベースとハンドルのユーザーの更新バージョンが新しいものに古いDBのバージョンからのデータを移植するときONUPGRADEが呼び出されます。 SqlLiteDatabaseクラスを使用して、db内のレコードの挿入、更新、および削除を呼び出すことができます。だから、何かのように言っていると思います:

if NumberOfRecords == 10 
    delete oldest recodr 
insert new record 

あなたは、挿入、更新の実装を見ると、ここhttp://www.vogella.de/articles/AndroidSQLite/article.htmlメソッドを削除することができます。

+0

あなたのリンクの方法を試しましたが、私はどこかにスタックしました。チャットはできますか? –

+0

あなたに失敗したコードを投稿できますか?私はいつチャットできるのか分からないが、可能ならば試してみる。 – Chris

0

新しいフィード用にデータベースを削除して再作成する必要はありません。データベースにある10行を更新するだけです。

EDIT:

私は今働いているあなたは何をすべきかを詳細 の上に行くために多くの時間をないましたROWIDは10

に1であるようなもの(私は唯一の行IDを追加しました)、あります
public void update(String string,String string2,String string3,String string4,String string5, rowId){ 
    ContentValues cv=new ContentValues(); 
    cv.put(DBHelper.TITLE, string); 
    cv.put(DBHelper.AGONISTIKI, string2); 
    cv.put(DBHelper.SKOR, string3); 
    cv.put(DBHelper.GIPEDO, string4); 
    cv.put(DBHelper.DATE, string5); 
    try 
    { 
     ourDatabase.update("osfpDB",cv,rowId,null); 
    } 
    catch(Exception e) 
    { 
     Log.e("DB ERROR ON .UPDATE", e.toString()); // prints the error message to the log 
     e.printStackTrace(); // prints the stack trace to the log 
    } 

} 

このように、毎回更新する行IDを渡します。ループの中。行IDを持つカウンタを作成します。例:

for (int i = 1; i <= 10; i++) 
{ 
    update(string1, string2, string 3 /*blah blah blah*/, i); 
} 

uの更新を行う

もう1つ注目すべきことは、データベースを作成するときに、10行のダミーデータを挿入することです。更新を行う前に、10行(または必要な行のw/e行)が表示されます。レコードが存在しない場合。更新は失敗します。作業後にコードを詳しく見ていきます。ごめんなさい。

編集:

このようなもの。しかし、私はあなたのcreateEntryの使用法は何か分かりません。コードを表示したり、説明したりするのはどうですか?私が言ったように。 10個の空の行を挿入し、それらの更新を行います。 Laters。

int rowId = 1; 
for (Message2 msg : messages){ 

      des.add(msg.getDescription());//keimeno 
      SK.add(msg.getskor()); 
      GOALA.add(msg.getgoal1()); 
      GOALB.add(msg.getgoal2()); 
      TITLES.add(msg.getTitle()); 
      AGONISTIKI.add(msg.getagonistiki()); 


      HashMap<String, String> map = new HashMap<String, String>(); 
       map.put("agon", msg.getagonistiki()); 

      map.put("name", msg.getTitle()); 
      map.put("date", msg.getDate()); 
      map.put("gip", msg.getgipedo()); 

      map.put("SK", msg.getskor()); 

      List_agones.add(map); 

      ListAdapter mSchedule = new SimpleAdapter(this, List_agones, R.layout.agonesrow, 
         new String[] {"agon","name", "date","gip", "SK"}, new int[] {R.id.TextView00,R.id.TextView01, R.id.TextView02, R.id.TextView04, R.id.TextView03}); 
      this.setListAdapter(mSchedule); 


      //grafei stin vasi dedomenwn 
      //------------------------- 
      HotOrNot entry=new HotOrNot(agones.this); 

       entry.open(); 
       if(map== null){ 

        Toast.makeText(agones.this, "1", 
          Toast.LENGTH_SHORT).show(); 
        entry.createEntry(msg.getTitle(),msg.getagonistiki(),msg.getskor(),msg.getgipedo(),msg.getDate()); 
       }else{ 

        Toast.makeText(agones.this, "2", 
          Toast.LENGTH_SHORT).show(); 
        entry.update(msg.getTitle(),msg.getagonistiki(),msg.getskor(),msg.getgipedo(),msg.getDate(), rowId++); 
       } 

       entry.close(); 
      //---------------------------------------- 
+0

はい、私はしたいと思いますが、私は方法を知らない: –

+0

他の答えのリンクを見てください。データベースの更新と削除の方法について説明しています。 – Chris

+0

テーブルの基本構造を表示できますか?私たちはあなたがそれを構築するのを手助けすることができるはずです。 – Rejinderi