我正在尝试使用String Arrays填充Android SQLIte
数据库表。我有阵列看起来像这样:
idStrArray = "1, 2, 3, 4"
titleStrArray = "Title 1", "Title 2", "Title 3", "Title 4"
descrStrArray = "Descr 1", "Descr 2", "Descr 3", "Descr 4"
locationStrArray = "Location 1", "Location 2", "Location 3", "Location 4"
我无法弄清楚如何在DBAdapter类中编写一个方法,该方法将使用这样的数组填充数据库表:
ID TITLE DESCR LOCATION
1 title1 descr1 location1
2 title2 descr2 location2
3 title3 descr3 location3
4 title4 descr4 location4
我在适配器类中试过这个:
DBAdapter Class:
public long AddStrArraysToDB(String[] calTitleStrArray, String[] calDescrStrArray, String[] calLocationStrArray){
try{
mDb = mDbHelper.getWritableDatabase();
cv = new ContentValues();
//--- title
for(int i=0;i<calTitleStrArray.length;i++){
cv.put(KEY_EVENT_TITLE, calTitleStrArray[i]);
mDb.insert(DB_TABLE, null, cv);
}
//--- end title
//--- descr
for(int i=0;i<calDescrStrArray.length;i++){
cv.put(KEY_EVENT_DESCR, calDescrStrArray[i]);
mDb.insert(DB_TABLE, null, cv);
}
//--- end descr
//--- location
for(int i=0;i<calLocationStrArray.length;i++){
cv.put(KEY_EVENT_LOCATION, calLocationStrArray[i]);
mDb.insert(DB_TABLE, null, cv);
}
//--- end location
mDb.close();
}catch(Exception ex){
Log.e("Error in phone contact insertion", ex.toString());
}//--- END Try
return mDb.insert(DB_TABLE, null, cv);
}
然后尝试在MainActivity中调用此方法,如下所示:
Main Activity:
Cal27Adapter addData = new Cal27Adapter(Cal27Main.this);
addData.open();
addData.AddStrArraysToDB (calTitleStrArray,calDescrStrArray,calLocationStrArray);
addData.close();
这样做会引发异常。有什么想法我怎么能在Adapter类中编写一个方法,将String Arrays作为列添加到我的数据库表中?
答案 0 :(得分:3)
您应该使用单个循环,并填写每条记录的所有字段,即
for(int i=0; i < calTitleStrArray.length ; i++){
cv = new ContentValues();
cv.put(KEY_EVENT_TITLE, calTitleStrArray[i]);
cv.put(KEY_EVENT_DESCR, calDescrStrArray[i]);
cv.put(KEY_EVENT_LOCATION, calLocationStrArray[i]);
mDb.insert(DB_TABLE, null, cv);
}
这假设所有数组都具有相同的长度(在这种情况下这是合理的)。