这个问题在这里已有答案:
我试着在我的 constructor class
中创建一个新的 database
和 table
,但我发现这行错误:
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 回答
您的表创建失败,因为您需要使用're using the wrong wording. It' s
IF NOT EXISTS
. 为简单起见,您应该为所有键使用大写字母 . 此外,您不需要使用 ``` ,因为tblApp
不是关键字,union
在您放置它和AUTOINCREMENT is not needed的位置没有任何意义 .在SQLite中,声明为INTEGER PRIMARY KEY的列将自动递增 . SQLite中没有自动增量关键字,这就是您收到错误的原因 . 您可以在SQLite FAQ找到更多信息 .