如何插入双精度值和浮点值到sqlite?

以下是我的数据库创build代码。

@Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + TIME + " INTEGER, " + LONGI + " TEXT, "+ LATI + " TEXT, "+ SPEED + " TEXT, "+ ACCU + " TEXT);"); } 

然后在这里添加一个数据点代码

 private void addGeoDataEntry(double logi, double lati, float speed, float accu) { SQLiteDatabase db = gpsDataHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(TIME, System.currentTimeMillis()); values.put(LONGI, logi+""); values.put(LATI, lati+""); values.put(SPEED, speed+""); values.put(ACCU, accu+""); db.insertOrThrow(TABLE_NAME, null, values); } 

当我打电话

 addGeoDataEntry(10.0,11.0,3.0f,1.1f); 

它给出了以下错误。 如何解决这个问题?

 03-14 13:57:26.910: I/Database(27910): sqlite returned: error code = 1, msg = near "1.0": syntax error 

REAL是你在找什么。 SQLite数据types的文档

我想你应该把这个列的数据types设置为NUMERIC或者DOUBLE或者FLOAT或者REAL

阅读http://sqlite.org/datatype3.html更多信息。;

SQL支持以下types的亲和性:

  • 文本
  • 数字
  • 整数
  • 真实
  • BLOB

如果列的声明types包含这些“REAL”,“FLOAT”或“DOUBLE”中的任何一个,则该列具有“REAL”亲和性。

实际上我认为你的代码是很好..你可以保存这些值作为string(TEXT)就像你做的..(如果你想)

你可能会得到System.currentTimeMillis()的错误,这对于INTEGER来说可能太大了

  enter code here package in.my; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBAdapter { private final Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db; private static final String DATABASE_NAME = "helper.db"; private static final int DATABASE_VERSION = 1; public static final String KEY_ID = "_id"; private static final String Table_Record = "create table Student (_id integer primary key autoincrement, " + "Name text not null,rate integer, Phone text not null,Salary text not null,email text not null,address text not null,des text not null,qual text not null,doj text not null);"; public DBAdapter(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); } private class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL(Table_Record); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } } public DBAdapter open() throws SQLException { db = DBHelper.getWritableDatabase(); return DBAdapter.this; } //---closes the database--- public void close() { DBHelper.close(); } public long insertTitle(String name,String phone,String web,String des,String address,String doj,String qual,String sal,int rate) { ContentValues initialValues = new ContentValues(); initialValues.put("Name", name); initialValues.put("Phone", phone); initialValues.put("email", web); initialValues.put("des", des); initialValues.put("Salary", sal); initialValues.put("qual", qual); initialValues.put("address", address); initialValues.put("doj", doj); initialValues.put("rate", rate); return db.insert("Student", null, initialValues); } public boolean deleteTitle(long rowId) { return db.delete("Student", KEY_ID + "=" + rowId, null) > 0; } public boolean UpdateTitle(long id,String name,String phone,String web,String des,String address,String doj,String qual,String sal,int rate) { ContentValues initialValues = new ContentValues(); initialValues.put("Name", name); initialValues.put("Phone", phone); initialValues.put("email", web); initialValues.put("des", des); initialValues.put("qual", qual); initialValues.put("Salary", sal); initialValues.put("address", address); initialValues.put("doj", doj); initialValues.put("rate", rate); return db.update("Student",initialValues, KEY_ID + "=" + id, null)>0; //return db.insert("Student", null, initialValues); } public Cursor getAllRecords() { return db.query("Student", new String[] { KEY_ID, "Name", "Phone", "email", "address", "des", "qual", "doj", "Salary", "rate" }, null, null, null, null, null); } }