Wie fügt man Double- und Float-Werte in SQLite ein?

Lesezeit: 4 Minuten

Benutzer-Avatar
dinesh707

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

REAL ist das, wonach Sie suchen. Dokumentation von SQLite-Datentypen

  • Ich habe den TEXT in REAL geändert und +””-Teile entfernt, um sie als Zahlen zu übergeben. Trotzdem bekomme ich den gleichen Fehler. Wie auch immer ich hinzugefügt habe: public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL (“DROP TABLE IF EXISTS” + TABLE_NAME); onCreate(db);} }

    – dinesh707

    14. März 2012 um 12:14 Uhr


  • könntest du die komplette Fehlermeldung zeigen? der Teil danach syntax error? Ich möchte die vollständige Meldung und den Fehler sehen

    – WarrenFaith

    14. März 2012 um 12:19 Uhr

  • Vielen Dank für den Link. Das Problem, das ich hatte, war, dass ich einige falsche Werte zu LOGIN, LATI usw. usw. hinzugefügt habe. Ich habe vergessen, dass es sich um Namen handelt. Ich habe dort Werte hinzugefügt.

    – dinesh707

    14. März 2012 um 12:26 Uhr

  • Ohne Änderung der Datenbankversion wird das onUpgrade nie aufgerufen. Der beste Weg ist also, Ihre App zu entfernen und eine Neuinstallation durchzuführen, um sie zu testen.

    – WarrenFaith

    14. März 2012 um 12:26 Uhr

Benutzer-Avatar
Sandhu

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

Benutzer-Avatar
Aashish Bhatnagar

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);
        }
    }
    

  • Hören Sie auf, Ihre eigene Frage zu kommentieren! Hören Sie auf, nur Code-Fragen ohne Erklärung zu posten, und verwenden Sie bitte nichts wie gr8. Wir sind Profis, oder?

    – WarrenFaith

    14. März 2012 um 12:18 Uhr

  • Entschuldigung, Tippfehler. Ich meinte, dass das Kommentieren Ihrer eigenen Antwort eher eine Bearbeitung sein sollte.

    – WarrenFaith

    14. März 2012 um 12:24 Uhr

  • Hören Sie auf, Ihre eigene Frage zu kommentieren! Hören Sie auf, nur Code-Fragen ohne Erklärung zu posten, und verwenden Sie bitte nichts wie gr8. Wir sind Profis, oder?

    – WarrenFaith

    14. März 2012 um 12:18 Uhr

  • Entschuldigung, Tippfehler. Ich meinte, dass das Kommentieren Ihrer eigenen Antwort eher eine Bearbeitung sein sollte.

    – WarrenFaith

    14. März 2012 um 12:24 Uhr

1246940cookie-checkWie fügt man Double- und Float-Werte in SQLite ein?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy