【发布时间】:2012-12-21 08:06:18
【问题描述】:
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。
Answer ::: 对不起,这是我的错误。我在数据库中调用了一个方法, 通过使用 Database.method(),而不是它的 object(db)。这使得 SQLiteDatabase 和 Cursor 对象在 Database.java 中是静态的 文件。当我将其更改为 db.method(),并删除了静态 关键字,效果很好。
感谢您的宝贵时间.. 麻烦您了。
【问题讨论】:
-
你检查数据库是否创建了吗?
标签: android