Das Folgende ist mein DB-Erstellungscode.
@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);");
}
Dann geht es hier an das Hinzufügen eines Datenpunktcodes
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);
}
wenn ich anrufe
addGeoDataEntry(10.0,11.0,3.0f,1.1f);
es gibt den folgenden Fehler. Wie kann man das beheben?
03-14 13:57:26.910: I/Database(27910): sqlite returned: error code = 1, msg = near "1.0": syntax error
SQL unterstützt die folgenden Arten von Affinitäten:
- TEXT
- NUMERISCH
- GANZE ZAHL
- REAL
- KLECKS
Wenn der deklarierte Typ für eine Spalte einen dieser Typen „REAL“, „FLOAT“ oder „DOUBLE“ enthält, hat die Spalte eine „REAL“-Affinität.
Ich denke, Sie sollten die Datentypen der Spalte als angeben NUMERISCH oder DOPPELT oder SCHWEBEN oder REAL
Lesen http://sqlite.org/datatype3.html zu mehr Infos.
Eigentlich denke ich, dass Ihr Code in Ordnung ist. Sie können diese Werte als Zeichenfolgen (TEXT) speichern, genau wie Sie es getan haben. (Wenn Sie möchten)
und Sie erhalten wahrscheinlich den Fehler für System.currentTimeMillis(), der möglicherweise zu groß für INTEGER ist
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);
}
}