java – 使用ContentValues将以零开头的字符串编号插入到字符串列中,但始终删除前导零

前端之家收集整理的这篇文章主要介绍了java – 使用ContentValues将以零开头的字符串编号插入到字符串列中,但始终删除前导零前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

参见英文答案 > Inserting a number as a String into a Text column and SQLite stills removes the leading zero                                    2个
我的桌子是用.创建的

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

最佳答案
STRING不是有效的sqlite类型,因此line_code使用默认类型INTEGER – 尝试更改CREATE TABLE语句以使用TEXT类型代替STRING.

猜你在找的Android相关文章