我在这一个类中扩展了SQLiteOpenHelper,并使用以下方法更新了我的数据库。
public void UpDateDataBase(ItemClass itemClass){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(KEY_ItemClass_NAME, itemClass.getTaskName());
contentValues.put(KEY_STATUS, itemClass.getStatus());
db.update(TABLE_NAME, contentValues, KEY_ID + " = ?", new String[]{String.valueOf(itemClass.getId())});
}
public static DataBaseHelper getInstance(){
return dbHelper;
}
}
当我尝试使用
在我的其他类中调用UpdateDataBase()方法时DataBaseHelper.getInstance().UpDateDataBase(new ItemClass());
它告诉我,我正在引用一个null对象。如何引用该类的相同实例?
谢谢。
尝试在空对象引用上调用虚方法'void demoapp.app.android.sqlitedatabaseapplication.DataBaseHelper.UpDateDataBase(demoapp.app.android.sqlitedatabaseapplication.ItemClass)'
答案 0 :(得分:2)
您需要使您的DatabaseHelper类成为单例。单例是一种设计模式,它将类的实例化限制为单个对象。 Alex Lockwood写了一篇关于数据库的非常简单且解释清楚的文章:http://www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html
此外,在Java中,类方法名称以小写字母开头是一种约定:updateDatabase而不是UpdateDatabase Camelcase包括在字符串中的新单词的开头放置一个超大写字母,不带空格:updateDatabase而不是UpDateDataBase
答案 1 :(得分:0)
来自活动
DatabaseHelper databaseHelper=new DatabaseHelper(Your Activity Context)
databaseHelper.methodName();
在DatabaseHelper中创建一个构造函数
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
我希望这会对你有所帮助