通过xml资源中包含的数组初始化sqlite表

时间:2015-10-05 09:40:16

标签: java android sqlite initialization

我必须在android中初始化一个sqllite数据库。 这是表格的结构:

    public static abstract class FeedEntry implements BaseColumns {
    public static final String TABLE_NAME = "entry";
    public static final String COLUMN_NAME_ENTRY_ID = "entryid";
    public static final String COLUMN_NAME_TITLE = "title";
}

我有一个如下所示的array.xml文件:

<?xml version="1.0" encoding="utf-8"?>

<string-array name="my_array">

    <item>S1 999</item>
    <item>S1 10</item>
    <item>S1 111</item>
    <item>S1 101</item>

</string-array>

现在我想获取此资源中的项目,将它们拆分为两个并使用结果初始化我的数据库。我有一个功能应该可以做到这一点:

    public void onCreate(SQLiteDatabase db) {
    db.execSQL(SQL_CREATE_ENTRIES);

    ContentValues values = new ContentValues();
    Resources res = fContext.getResources();
    String[] myArray = res.getStringArray(R.array.my_array);
    for (String item : myArray){
        System.out.println(item);
        String[] split = item.split(" ");
        values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID, split[1]);
        values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE, split[0]);
        db.insert(FeedReaderContract.FeedEntry.TABLE_NAME, null, values);
    }

问题在于,而不是获得预期的结果

S1 999 
S1 10 
S1 111 
S1 101

我得到以下内容:

1 1
2 1
3 1
4 1

事实上,System.out.println(item);打印的每个项目都包含一对两个值,如1 1, 2 1等。我应该如何修改onCreate的java方法来获取正确的几个字符串,比如S1 999

以下是我如何阅读表格中的数据:

String[] projection = {
            FeedReaderContract.FeedEntry._ID,
            FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE,
    };
Cursor cursor = db.query(
            FeedReaderContract.FeedEntry.TABLE_NAME,  // The table to query
            projection,                               // The columns to return
            null,                                // The columns for the WHERE clause
            null,                            // The values for the WHERE clause
            null,                                     // don't group the rows
            null,                                    // don't filter by row groups
            sortOrder 


);


String result = "";

    DatabaseUtils.dumpCursor(cursor);
    int iRow = cursor.getColumnIndex(FeedReaderContract.FeedEntry._ID);
    int iName = cursor.getColumnIndex(FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE); 
        for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()){
        result = result + cursor.getString(iRow) + " " + cursor.getString(iName) + "\n";
    }
    System.out.println(result);

:我有一个向数据库发送请求的游标,然后我打印了游标的内容。

1 个答案:

答案 0 :(得分:0)

您错误地拆分了字符串。按空格分割字符串使用下面的代码。

str = "This is the string seperated by space";
String[] splited = str.split("\\s+");