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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...