Android数据库更新

时间:2011-12-13 16:59:35

标签: java android database

在我的应用程序中,我将我的RSS新闻存储在数据库中。当用户通过互联网进入我的新闻活动时,我会调用createEnty();方法

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

(在HotOrNot中)

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

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条新闻,他们就会写入数据库。如果第二次有12个新闻,相同的12个新闻,应用程序重写它们,我在我的数据库中有24个条目,而不是我想要的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();

2 个答案:

答案 0 :(得分:0)

我认为您可以在互联网连接操作上的脚本中编写delete *。

删除*清除数据库中的条目,它不会删除表。因此,在下一步操作中,您可以插入您想要的内容。

答案 1 :(得分:0)

createEntry方法之上添加。

context.deleteDatabase(DB_NAME);

context可以是您的活动)

它实际上删除了db文件。因此,下次执行getReadableDatabase()(或getWritableDatabase())时,系统会重新创建它。

编辑:类似于:

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