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

时间:2016-08-11 06:47:25

标签: java android sqlite

我尝试在database中创建一个新的tableconstructor class,但我发现这行错误:

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

并且崩溃了我的应用程序。

这是我的班级:

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 :(得分:0)

您的表创建失败,因为您使用了错误的措辞。您需要使用它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 :(得分:-1)

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