在Android中,从String Arrays填充SQLite DB表

时间:2014-06-06 21:53:46

标签: android sqlite

我正在尝试使用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作为列添加到我的数据库表中?

1 个答案:

答案 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);
    }

这假设所有数组都具有相同的长度(在这种情况下这是合理的)。