错误地检索字符串数据SQLite - Android

时间:2014-06-29 23:16:55

标签: android sqlite

从SQL Lite Db中检索字符串类型时遇到问题。当我将我的字符串存储到SQL Lite数据库中时,字符串存储正确,但是当我尝试检索这些字符串时,它返回的内容多于我存储的字符串。如果这令人困惑,我的代码db.storeNames(EVENTNAMES); (EVENTNAMES是一个列表)

    public void storeNames(List<String> names)
{
    SQLiteDatabase db = this.getWritableDatabase();

    for(int i = 0; i < names.size(); i++) {
        ContentValues values = new ContentValues();
        values.put(KEY_LABEL, names.get(i)); // Info Name

        db.insert(TABLE_INFO, null, values);
        // Closing database connection
    }

    Log.i("DB MESSAGE ", names.size() + " NAMES STORED");

    db.close();
}

然后我检索

        eventName = db.getEventName();

这是相应的数据库代码。

public List<String> getEventName() {
    List<String> nameList = new ArrayList<String>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_INFO;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);


    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            String name = cursor.getString(1);

            nameList.add(name);

        }
        while (cursor.moveToNext());
        Log.i("POSITION ", " NAMES "+ cursor.getPosition() + " RETRIEVED");

    }


    db.close();
    // return info list
    return nameList;
}`

为什么它检索的次数超出了预期。来自getNames()方法的Log消息打印出&#34; NAMES(它应该是3x Number)检索。

**EDIT**

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main)


    EVENTNAMES.add("EVENT 1");
    EVENTNAMES.add("EVENT 2");
    EVENTNAMES.add("EVENT 3");
    EVENTNAMES.add("EVENT 4");
    EVENTNAMES.add("EVENT 5");



    db.storeNames(EVENTNAMES);



}

1 个答案:

答案 0 :(得分:0)

当为同一数据库多次打开活动时,新事件将添加到已存储在数据库中的任何现有事件中。 如果要替换数据库中的所有事件,则必须先删除任何旧事件,然后再存储新事件。