android.database.sqlite.SQLiteException:在“table”附近:语法错误(代码1):编译时:

问题描述:

我创建了一个SQLite Helper类来处理我的数据库。android.database.sqlite.SQLiteException:在“table”附近:语法错误(代码1):编译时:

我在运行我的代码时经常出现这个错误,但是我在创建表语法中找不到任何错误。

ERROR: android.database.sqlite.SQLiteException: near "table": syntax error (code 1): , while compiling:CREATE TABLE 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; 
     } 
    } 
+1

请参阅https://sqlite.org/lang_keywords.html –

原因是作为表名字table的。

表是关键字,因此您不能将其用作标识符。

查看documentation

+0

谢谢。我用'Tablename'取代了它。但它仍然显示相同的错误。 –

+0

你把它改为'public static String Table =“tablename”'? 'tablename'不是关键字,所以它应该工作。尝试像'public static String Table =“table1”'。 – Renzo

+0

工作。谢谢。 –