5

我的表是用

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”前面放一些符号,然后在检索后将其删除。

4

2 回答 2

3

STRING不是有效的 SQLite 类型,因此line_code使用默认类型也是如此,INTEGER- 尝试更改您的CREATE TABLE语句以使用TEXT类型代替STRING.

于 2013-09-08T03:04:28.783 回答
1

您应该调查sql寄存器部分,如果行代码注册为整数类型,则将删除零。

于 2013-09-08T02:08:11.767 回答