Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Caused by: android.database.sqlite.SQLiteException: near "": syntax error (code 1): , while compiling:

    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 class:

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

Operation class:

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't find cause of error.

like image 910
user4299176 Avatar asked Nov 27 '14 09:11

user4299176


People also ask

Which method is used in Android to executing SQLite queries?

We will call a method of this class called rawQuery and it will return a resultset with the cursor pointing to the table. We can move the cursor forward and retrieve the data. This method return the total number of columns of the table.

What is SQLite exception?

A SQLite exception that indicates there was an error with SQL parsing or execution. See: https://developer.android.com/reference/android/database/sqlite/SQLiteException.

What is ExecSQL in Android SQLite?

ExecSQL(String) Execute a single SQL statement that is NOT a SELECT or any other SQL statement that returns data. ExecSQL(String, Object[]) Execute a single SQL statement that is NOT a SELECT/INSERT/UPDATE/DELETE.

Which library provides the database support in Android application SQL SQLite?

One popular option for adding ORM support to SQLite on Android is OrmLite.


2 Answers

order is a keyword in SQL. Either rename the table, or put the table name in double quotes like "order".

like image 81
laalto Avatar answered Oct 03 '22 01:10

laalto


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

like image 25
Blackbelt Avatar answered Oct 03 '22 02:10

Blackbelt