2011-12-04 36 views
0

即时通讯在数据库中的一些消息,我从rss.My的问题是,我想新的饲料覆盖旧的one.I要每次有10个新闻在我的数据库,但?现在即时通讯有我每次刷新10更多的时间..如何更新时更新我的​​数据库

搜索网,我发现该解决方案必须是onUpgrade method.Could你帮我做的,这是onUpgrade使用IM象现在

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

} 

编辑

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 
    } 

} 
0123当你的应用程序和数据库的用户更新版本和处理来自旧的数据库版本的数据移植到新的

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

onUpgrade被调用。您可以使用SqlLiteDatabase类对数据库中的记录调用insert,update和delete。所以,你不得不说这样的事情:

if NumberOfRecords == 10 
    delete oldest recodr 
insert new record 

你可以看到插入,更新的实现,在这里http://www.vogella.de/articles/AndroidSQLite/article.html删除方法。

+0

我已经尝试过你的链接,但我已经堆放在某个地方。我们可以聊天吗? –

+0

你可以发布失败的代码吗?不知道什么时候可以进行聊天,但我会尽可能尝试。 – Chris

0

您不必为新供稿删除并重新创建数据库。只需更新数据库中的10行。

编辑:

我现在的工作有没有太多的时间去在细节 你应该做的是一样的东西(我只加行ID),其中ROWID为1〜10

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。在循环。用行号创建一个计数器例如:

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

。为你做更新。

需要注意的另一件事是,当您创建数据库时,插入一个10行的虚拟数据。在你做任何更新之前,应该有10行(或者你需要的行数)。如果记录不存在。更新将失败。下班后会深入了解你的代码。抱歉。

编辑:

好的。像这样的东西。但我不知道你的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