【问题标题】:Android Sqlite insert null object reference [duplicate]Android Sqlite插入空对象引用[重复]
【发布时间】: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)'在空对象引用上

标签: android sqlite insert


【解决方案1】:

1) 我认为您没有正确使用SQLiteDatabase mDatabase = getWritableDatabase();。 2) 请参阅ContentValues 了解更多信息。 3) 使用if 确保已插入。

    if (mDatabase.insert(CustomerDbSchema.CustomerTable.NAME, null, contentValues) > 0) {
        return true;
    }
    return false;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-31
    • 2016-10-04
    • 2015-03-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    相关资源
    最近更新 更多