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.
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.
A SQLite exception that indicates there was an error with SQL parsing or execution. See: https://developer.android.com/reference/android/database/sqlite/SQLiteException.
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.
One popular option for adding ORM support to SQLite on Android is OrmLite.
order
is a keyword in SQL. Either rename the table, or put the table name in double quotes like "order"
.
order
is a sqlite keyword, and sqlite keywords can not be used as table name. Here you can find a list of those
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With