Android Sqlite插入空对象引用[重复]
Posted
技术标签:
【中文标题】Android Sqlite插入空对象引用[重复]【英文标题】:Android Sqlite insert null object reference [duplicate] 【发布时间】:2018-09-26 12:09:04 【问题描述】:我正在介绍 android 编程课程,遇到一些添加到 sqlite 数据库的问题
任何可能导致此错误的建议。我认为这与没有正确分配 mDatabase 字段变量有关。
似乎问题在于 addCustomer 函数中的 mDatabase 变量需要不同的上下文。
private static ContentValues getContentValues(Customer customer)
ContentValues values = new ContentValues();
values.put(UUID, customer.getId().toString());
values.put(FULL_NAME, customer.getName());
values.put(ADDRESS, customer.getAddress());
values.put(CREDIT_CARD_NUMBER, customer.getCreditCardNumber());
values.put(EMAIL, customer.getEmail());
values.put(SESSIONS_REMAINING, customer.getSessionsRemaining());
values.put(PRINT_RECEIPT, customer.getPrintReceipt() ? 1 : 0);
values.put(EMAIL_RECEIPT, customer.getEmailReceipt() ? 1 : 0);
return values;
public void addCustomer(Customer c)
ContentValues values = getContentValues(c);
mDatabase.insert(CustomerDbSchema.CustomerTable.NAME, null, values);
Log.d("DATABASE", "Customer Added");
以下 Github 上的文件链接:
CustomerDataBase.java
CustomerCursorWrapper.java
CustomerDBSchema.java
Customer.java
AddCustomerActivity.java
【问题讨论】:
发布日志错误 java.lang.NullPointerException: 尝试调用虚拟方法 'long android.database.sqlite.SQLiteDatabase.insert(java.lang.String, java.lang.String, android.content.ContentValues)'在空对象引用上 【参考方案1】:1) 我认为您没有正确使用SQLiteDatabase mDatabase = getWritableDatabase();
。
2) 请参阅ContentValues 了解更多信息。
3) 使用if
确保已插入。
if (mDatabase.insert(CustomerDbSchema.CustomerTable.NAME, null, contentValues) > 0)
return true;
return false;
【讨论】:
以上是关于Android Sqlite插入空对象引用[重复]的主要内容,如果未能解决你的问题,请参考以下文章
显示来自sqlite数据库的数据时“尝试在空对象引用上调用虚拟方法”[重复]
如何修复 Android Studio / SQLite 中的“空对象引用”错误? [复制]
Android:尝试在空对象引用[duplicate]上调用虚方法'void android.database.sqlite.SQLiteDatabase.execSQL(java.lang.
.getImage() 上的空对象引用 android [重复]
什么错误尝试在空对象引用上调用虚拟方法'java.lang.String android.content.Context.getPackageName()'[重复]