无法从另一个 activity 写入 sqlite
Cannot write to sqlite from another activity
我尝试调用方法并从 android 中的另一个 activity 写入我的数据库,但我的应用程序崩溃了,因为它无法写入。我的 activity 没有 On Create 因为它不需要它。因此我有这段代码:
DB db = new DB(ServSearcher.this);
我想让我访问我的数据库,然后我使用下面的方法:
List<Contact> contacts = db.getAllContacts();
for (Contact cn : contacts) {
db.addContact(new Contact(var, getTime()));
这是我的 logcat 错误:
java.lang.NullPointerException
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:268)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
at com.android.SecondActivity.DB.getAllContacts(DB.java:88)
at com.android.SecondActivity.ServSearcher.onAvailable(ServSearcher.java:189)
我认为很明显我的应用程序无法写入数据库,所以这一行是错误的 DB db = new DB(ServSearcher.this);
或者至少没有给我访问权限,有什么想法吗?
在 V_J 评论后编辑:
这是我在 DB 上的方法
public List<Contact> getAllContacts() {
List<Contact> contactList = new ArrayList<Contact>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.setTime(cursor.getInt(0));
contact.setName(cursor.getString(1));
// Adding contact to list
contactList.add(contact);
} while (cursor.moveToNext());
}
// return contact list
return contactList;
}
我觉得你可以用单例模式解决你的问题,下面留一个link给你解释。
我尝试调用方法并从 android 中的另一个 activity 写入我的数据库,但我的应用程序崩溃了,因为它无法写入。我的 activity 没有 On Create 因为它不需要它。因此我有这段代码:
DB db = new DB(ServSearcher.this);
我想让我访问我的数据库,然后我使用下面的方法:
List<Contact> contacts = db.getAllContacts();
for (Contact cn : contacts) {
db.addContact(new Contact(var, getTime()));
这是我的 logcat 错误:
java.lang.NullPointerException
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:268)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
at com.android.SecondActivity.DB.getAllContacts(DB.java:88)
at com.android.SecondActivity.ServSearcher.onAvailable(ServSearcher.java:189)
我认为很明显我的应用程序无法写入数据库,所以这一行是错误的 DB db = new DB(ServSearcher.this);
或者至少没有给我访问权限,有什么想法吗?
在 V_J 评论后编辑:
这是我在 DB 上的方法
public List<Contact> getAllContacts() {
List<Contact> contactList = new ArrayList<Contact>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.setTime(cursor.getInt(0));
contact.setName(cursor.getString(1));
// Adding contact to list
contactList.add(contact);
} while (cursor.moveToNext());
}
// return contact list
return contactList;
}
我觉得你可以用单例模式解决你的问题,下面留一个link给你解释。