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

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

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

  1. db.execsql(
  2. "CREATE TABLE periods (" +
  3. " vehicle_id INTEGER KEY," +
  4. " line_id INTEGER KEY," +
  5. " period_id INTEGER PRIMARY KEY AUTOINCREMENT," +
  6. " line_code STRING," +
  7. " sup_code STRING," +
  8. " start_date INTEGER," +
  9. " end_date INTEGER" +
  10. ")"
  11. );

插入数据

  1. ContentValues values = new ContentValues();
  2. values.put("vehicle_id",1);
  3. values.put("line_id",2);
  4. values.put("line_code","0406");
  5. values.put("sup_code"," ");
  6. values.put("start_date",1);
  7. values.put("end_date",24);
  8. db.insert("periods",null,values);

但是当我用数据检索数据时

  1. Cursor cPeriods = db.rawQuery("SELECT * FROM periods WHERE vehicle_id=" + vehicleId,null);
  2. System.err.printf("sqlite: ### Get line_code = \"%s\"\n",cPeriods.getString(3));

结果总是“406”

如何解决这个问题?
我不想做一个丑陋的修复,例如在插入之前在“0406”前放置一些符号,并在检索后将其删除.

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

猜你在找的Android相关文章