android.database.sqlite.SQLiteException: рядом с таблицей: синтаксическая ошибка (код 1): при компиляции:

Я создал класс SQLite Helper для обработки моей базы данных.

Я постоянно получаю эту ошибку при запуске своего кода, но я не могу найти ничего неправильного в синтаксисе создания таблицы.

ОШИБКА: android.database.sqlite.SQLiteException: рядом с «таблицей»: синтаксическая ошибка (код 1): при компиляции: таблица CREATE TABLE (ID INTEGER PRIMARY KEY AUTOINCREMENT, ACCOUNT_HOLDER TEXT, DEBIT INTEGER, CREDIT INTEGER, BALANCE INTEGER)

    package com.example.user.balancesheet;

    import android.content.ContentValues;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;

    public class DatabaseHelper extends SQLiteOpenHelper{
    private static final int DB_Version=1;
    private static final String Database="BalanceSheet.db";
    public static String Table="table";

    public DatabaseHelper(Context context) {
            super(context, Database, null, DB_Version);
            SQLiteDatabase db=this.getWritableDatabase();
        }

        @Override
        public void onCreate(SQLiteDatabase db) {       
             String query="CREATE TABLE " + Table +" (ID INTEGER PRIMARY KEY 
    AUTOINCREMENT, ACCOUNT_HOLDER TEXT, DEBIT INTEGER, CREDIT INTEGER, 
    BALANCE INTEGER)";
            db.execSQL(query);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int 
    newVersion) {
                    db.execSQL("DROP IF EXIST " + Table);
            onCreate(db);
        }

        public Boolean insertdata(String name, int deb, int cred, int bal){
            ContentValues val=new ContentValues();
            val.put("ACCOUNT_HOLDER", name);
            val.put("DEBIT", deb);
            val.put("CREDIT_HOLDER", cred);
            val.put("BALANCE", bal);
            SQLiteDatabase db=this.getWritableDatabase();
            long result=db.insert(Table, null, val);
            Log.d("METHOD","ADDLEDGER");
            if(result==-1)
                return false;
            else
                return true;
         }
    }

person Mayank Jindal    schedule 03.05.2017    source источник
comment
См. sqlite.org/lang_keywords.html.   -  person Diego Torres Milano    schedule 03.05.2017


Ответы (1)


Причина в использовании слова table в качестве имени таблицы.

Таблица — это ключевое слово, поэтому вы не можете использовать его в качестве идентификатора.

См. документацию.

person Renzo    schedule 03.05.2017
comment
Спасибо. Я заменил его на «Имя таблицы». Но он все еще показывает ту же ошибку. - person Mayank Jindal; 03.05.2017
comment
Вы изменили его как public static String Table="tablename"? tablename не ключевое слово, так что должно работать. Попробуйте что-нибудь вроде public static String Table="table1". - person Renzo; 03.05.2017