java使用ContentValues在字符串列中插入以零开头的字符串编号,但前导零始终被删除
我的桌子是用
db.execSQL(
"CREATE TABLE periods (" +
" vehicle_id INTEGER KEY," +
" line_id INTEGER KEY," +
" period_id INTEGER PRIMARY KEY AUTOINCREMENT," +
" line_code STRING," +
" sup_code STRING," +
" start_date INTEGER," +
" end_date INTEGER" +
")"
);
数据是用
ContentValues values = new ContentValues();
values.put("vehicle_id", 1);
values.put("line_id", 2);
values.put("line_code", "0406");
values.put("sup_code", " ");
values.put("start_date", 1);
values.put("end_date", 24);
db.insert("periods", null, values);
但当我用
Cursor cPeriods = db.rawQuery("SELECT * FROM periods WHERE vehicle_id=" + vehicleId, null);
System.err.printf("SQLite: ### Get line_code = \"%s\"\n", cPeriods.getString(3));
结果总是“406”
如何解决这个问题? 我不想做一个丑陋的修复,比如在插入之前在“0406”前面放置一些符号,然后在检索后将其删除
# 1 楼答案
您应该调查sql寄存器部分,如果行代码被注册为整数类型,那么零将被删除
# 2 楼答案
STRING
不是有效的SQLite类型,因此line_code
正在使用默认类型INTEGER
-尝试更改CREATE TABLE
语句以使用TEXT
类型代替STRING