我很好奇androids SQLiteDatabase insert 方法是否自动处理类型转换。
这是我的例子:
我有一个列名为年龄的 csv 文件。它的类型将是一个整数。
假设我已经创建了数据库和表。
现在我正在使用 CSVReader 解析 csv 文件,它解析每一行并将每个值插入到 String[] 的索引中。
为了将每一行数据插入数据库,我必须使用一个 ContentValue 对象,它允许我在其中存储值。
//Parse each line and store in line...
ContentValue values = new ContentValue();
values.put(KEY_AGE, line[1]); // Assume line[1] is the age
database.insert(table, null, values);
如果我将年龄值存储为字符串(如上所示),然后将其插入表中,Android 是否会在将其插入数据库之前处理转换为 INTEGER ?
我问这个是因为我试图将一堆表插入数据库,当我可以迭代一个数组然后显式声明每个 put 调用时,它看起来更干净,即:
另外,如果有人有任何设计建议,请随时告诉我。
干净的
int i = 0;
for(String s : TransitContract.Routes.COLUMN_ARRAY) {
values.put(s, line[i]);
i++;
}
丑陋的
values.put(TransitContract.Routes.KEY_ROUTE_ID, line[0]);
values.put(TransitContract.Routes.KEY_AGENCY_ID, line[1]);
values.put(TransitContract.Routes.KEY_SHORT_NAME, line[2]);
values.put(TransitContract.Routes.KEY_LONG_NAME, line[3]);
values.put(TransitContract.Routes.KEY_DESCRIPTION, line[4]);
values.put(TransitContract.Routes.KEY_ROUTE_TYPE, Integer.parseInt(line[5]));
values.put(TransitContract.Routes.KEY_URL, line[6]);
values.put(TransitContract.Routes.KEY_COLOR, line[7]);
values.put(TransitContract.Routes.KEY_TEXT_COLOR, line[8]);
return mDatabase.insert(TransitContract.Routes.TABLE_NAME, null, values);