首页 文章

SQLite在android [duplicate]中的构造函数中创建表错误

提问于
浏览
0

这个问题在这里已有答案:

我试着在我的 constructor class 中创建一个新的 databasetable ,但我发现这行错误:

db.execSQL("CREATE TABLE IF NOT EXIST tblApp ( _ID INTEGER PRIMARY kEY AUTOINCREMENT UNION, Title TEXT )",null);

并崩溃了我的应用程序 .

这是我的 class :

package ir.rezvania.modirbash;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;

public class db {
    Context ctx;
    Cursor crs;
    private SQLiteDatabase db;
    public db(Context ctx){
       this.ctx=ctx;
        db = ctx.openOrCreateDatabase("`dbApp`", Context.MODE_PRIVATE, null);
        db.execSQL("CREATE TABLE IF NOT EXIST `tblApp` ( _ID Integer Primary key autoincrement union, Title Text )",null);
    }
    public void Insert(String FILDS,String VALUES){
        db.execSQL("INSERT INTO `tblApp` ("+FILDS+")VALUES("+VALUES+");");
    }
    public void Update(String ID,String COLUMN,String VALUE){
        db.execSQL("UPDATE `tblAPP` SET"+COLUMN+"="+VALUE+"WHERE _ID="+ID+";");
    }
    public void Delete(String ID){
        db.execSQL("DELETE FROM `tblApp` WHERE _ID="+ID+";");
    }
    public Cursor Show(){
        crs=db.rawQuery("SELECT * FROM `tblApp`",null);
        return crs;
    }

    public void finalize(){
        db.close();
    }
}

2 回答

  • 0

    您的表创建失败,因为您需要使用're using the wrong wording. It' s IF NOT EXISTS . 为简单起见,您应该为所有键使用大写字母 . 此外,您不需要使用 ``` ,因为 tblApp 不是关键字, union 在您放置它和AUTOINCREMENT is not needed的位置没有任何意义 .

    db.execSQL("CREATE TABLE IF NOT EXISTS tblApp (_ID INTEGER PRIMARY KEY, Title TEXT)", null);
    
  • -1

    在SQLite中,声明为INTEGER PRIMARY KEY的列将自动递增 . SQLite中没有自动增量关键字,这就是您收到错误的原因 . 您可以在SQLite FAQ找到更多信息 .

相关问题