2014-11-27 11 views
5
 
    11-27 03:32:04.471: E/AndroidRuntime(23137): Caused by: android.database.sqlite.SQLiteException: near "order": syntax error (code 1): , while compiling: create table order (_id integer primary key autoincrement, origin text not null, quantity integer not null);

MyDatabase Klasse:Verursacht durch: android.database.sqlite.SQLiteException: in der Nähe von "": Syntaxfehler (Code 1):, beim Kompilieren:

public class MyDatabase extends SQLiteOpenHelper { 

    public static final String TABLE_NAME = "order"; 
    public static final String TABLE_ID = "_id"; 
    public static final String TABLE_ORIGIN = "origin"; 
    public static final String TABLE_QUANTITY = "quantity"; 
    private static final String DATABASE_NAME = "Appple.db"; 
    private static final int DATABASE_VERSION = 1; 

    private static final String DATABASE_CREATE = 
     "create table " + TABLE_NAME + 
      "(" + TABLE_ID + " integer primary key autoincrement, " + 
      TABLE_ORIGIN + " text not null, " + 
      TABLE_QUANTITY + " integer not null);"; 

    public MyDatabase (Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(DATABASE_CREATE); 
    } 

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
     onCreate(db); 
    } 
} 

Betriebsklasse:

public class Operation { 

    private MyDatabase dbHelper; 
    private String[] COLUMNS = { MyDatabase.TABLE_ID, MyDatabase.TABLE_ORIGIN, MyDatabase.TABLE_QUANTITY }; 
    private SQLiteDatabase database; 


    public Operation(Context context) { 
     dbHelper = new MyDatabase(context); 
    } 

    public void open() throws SQLException { 
     database = dbHelper.getWritableDatabase(); 
    } 

    public void close() { 
     dbHelper.close(); 
    } 

    public void add(String origin, String quantity) { 
     ContentValues values = new ContentValues(); 
     values.put(MyDatabase.TABLE_ORIGIN, origin); 
     values.put(MyDatabase.TABLE_QUANTITY, Integer.parseInt(quantity)); 
     database.insert(MyDatabase.TABLE_NAME, null, values); 
    }  

    public int get(String origin) { 
     int total = 0; 

     Cursor cursor = database.query(MyDatabase.TABLE_NAME, COLUMNS, 
       MyDatabase.TABLE_ORIGIN + " = " + origin, null, null, null, null); 
     cursor.moveToFirst(); 
     while(!cursor.isAfterLast()) { 
      total += cursor.getInt(2); 
      cursor.moveToNext(); 
     } 
     cursor.close(); 
     return total; 
    } 
} 

In MainActivity mit

Operation op; 
op = new Operation(this); 
op.open(); 

denken beginne ich dort ist kein Problem in CREATE TABLE. Aber ich kann keine Fehler finden.

+0

finden Sie sollten klarer mit was Ihr Problem ist. Ändern Sie den Titel der Frage in etwas passenderes und spezifizieren Sie das genaue Problem. Enthalten Sie auch full stacktrace und geben Sie die genaue Zeile an, in der es auftritt. – Magnilex

Antwort

11

order ist ein Schlüsselwort in SQL. Benennen Sie die Tabelle entweder um, oder fügen Sie den Tabellennamen in Anführungszeichen wie "order" ein.

+0

Tanks! :) Ich verbringe viel Zeit, um es zu lösen. – user4299176

+0

tnx mann. es hat mir viel Zeit gespart. –

6

order ist ein SQLite-Schlüsselwort, und SQLITE-Schlüsselwörter können nicht als Tabellenname verwendet werden. Here können Sie eine Liste dieser

+0

Tannk du sehr! Einen schönen Tag noch! – user4299176

+0

Ich habe den gleichen Fehler für die Definition des Spaltennamens. Verwenden Sie keine Namen aus der Liste der SQLite-Schlüsselwörter. – vovahost

+0

@vovahost es ist schwierig zu sagen, was vor sich geht, ohne den Code zu sehen. Versuchen Sie, eine Frage zu stellen – Blackbelt

Verwandte Themen