Как обновить мою базу данных - PullRequest
0 голосов
/ 21 января 2012

Я создал базу данных, в которой хранятся данные из Интернета. Когда есть подключение к Интернету, я вызываю createEntry и записываю данные в базу данных.Моя проблема заключается в том, что во второй раз, когда пользователи используют Интернет, новые данные не перекрывают старые, а создают новые записи. Итак, я думаю, что решением будет обновление моей базы данных со второго раза, когда у пользователя есть подключение к Интернету., так что каждый раз, чтобы иметь одинаковое количество данных. Моя проблема в том, что я не знаю, как это сделать. Это моя первая попытка 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();

1 Ответ

3 голосов
/ 21 января 2012

Попробуйте эту функцию ::

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


В вашей проблеме я заметил, что вы хотите отбросить только дублирующиеся записи,
для этого вам не нужно обновлять запись или не менять свою функцию кода, просто установите первичный ключ для столбца заголовка таблицы - это не позволит вставить повторяющиеся записи .. (если у вас есть другой запрос, сообщите мне)

ref: Соглашения об именах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...