Called: android.database.sqlite.SQLiteException: next to "": syntax error (code 1): during compilation:

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

Class MyDatabase:

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

Class of work:

 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, start with

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

I think there is no problem in CREATE TABLE. But I can not find the cause of the error.

+5
source share
2 answers

order is a keyword in SQL. Rename the table or put the table name in double quotes, for example "order" .

+11
source

order is the sqlite keyword, and sqlite keywords cannot be used as the table name. Here you can find a list of those

+6
source

Source: https://habr.com/ru/post/1207792/


All Articles