从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);
}
答案 0 :(得分:0)
当为同一数据库多次打开活动时,新事件将添加到已存储在数据库中的任何现有事件中。 如果要替换数据库中的所有事件,则必须先删除任何旧事件,然后再存储新事件。