Android 2.3.3
static String name = "Database";
static int version = 1;
static SQLiteDatabase sqlDB;
static Cursor c;
public Database(Context context) {
super(context, name, null, version);
// TODO Auto-generated constructor stub
sqlDB = getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase sqlDB) {
// TODO Auto-generated method stub
sqlDB.execSQL("create table if not exists Operations(Command Text, Pos1 Text, " +
"Pos2 Text, Pos3 Text, Pos4 Text, Pos5 Text, Pos6 Text, Pos7 Text, Pos8 Text, Pos9 Text, Pos10 Text)");
insertData();
}
private void insertData() {
// TODO Auto-generated method stub
String addQuery ="ADD, add, and, had, ad, anddd, anndd, null, null, null, null";
sqlDB.execSQL("insert into Operations values("+ addQuery +")");
//Exception at the above line
}
总共有11列。
我可以在数据库中插入NULL吗? 如果是,我试图将数据插入数据库的方式有问题吗?
正如rekire所指出的,似乎问题在于getWritableDatabase()。我正在调用构造函数,Database db = new Database(this);到目前为止在所有其他项目中工作,因为我已经声明了名称和版本的局部变量,并且为工厂提供了null。
回答:::对不起,这是我的错误。我在数据库中调用了一个方法, 通过使用Database.method(),而不是它的对象(db)。这使得 SQLiteDatabase和Cursor对象在Database.java中是静态的 文件。当我将其更改为db.method(),并删除静态 关键字,它工作正常。
感谢您的时间..并为此事感到抱歉。
答案 0 :(得分:0)
如果我猜对了,你的函数getWritableDatabase()
会返回null。
答案 1 :(得分:0)
在进行查询之前,您需要调用open()方法
mDbHelper.open(); //whitout this call mdb will be NULL
答案 2 :(得分:0)
private void insertData() {
if(sqlDB == null) sqlDB.open();
String addQuery ="ADD, add, and, had, ad, anddd, anndd, null, null, null, null";
sqlDB.execSQL("insert into Operations values("+ addQuery +")");
}
答案 3 :(得分:0)
中的
public void onCreate(SQLiteDatabase sqlDB)
你应该指定sqlDB = sqlDB;
那么你可以在insertData()