ContentValues不向新添加的列插入值:访问时返回null

时间:2016-06-28 08:48:04

标签: android sqlite android-sqlite

我正在访问下表以检索数据。但是当我这样做时,最后一列访问给了我一个nullpointer异常。此栏目是新增的。它工作正常。表创建成功完成。没有错误。

这是我的表创建查询:

String CREATE_ASSIGNMENT_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_ASSIGNMENT + "("
            + KEY_ID + " integer PRIMARY KEY AUTOINCREMENT,"+KEY_JOB_NUMBER+" text,"+KEY_TIME_ASSIGNED+" text,"+KEY_TIME_RECEIVED+" text,"
            +KEY_STATUS_READ+" integer DEFAULT 0,"+KEY_STATUS_COMPLETE+" integer DEFAULT 0,"+KEY_ACCIDENT_ADDRESS+" text DEFAULT 'Not Specified',"
            +KEY_ACCIDENT_LAT+" double,"+KEY_ACCIDENT_LNG+" double,"+KEY_VEHICLE_NUMBER+" text DEFAULT 'Not Specified',"+KEY_ENGINE_NUMBER+" text DEFAULT 'Not Specified',"
            +KEY_CHASSIS_NUMBER+" text DEFAULT 'Not Specified',"+KEY_VEHICLE_MAKE_MODEL+" text DEFAULT 'Not Specified',"+KEY_DRIVER_NAME+" text DEFAULT 'Not Specified',"+KEY_DRIVER_CONTACT_NUMBER+" integer DEFAULT 0,"
            +KEY_POLICY_NUMBER+" text DEFAULT 'Not Specified',"+KEY_POLICY_STATUS+" text DEFAULT 'Not Specified',"+KEY_POLICY_PERIOD+" text DEFAULT 'Not Specified',"+KEY_SUM_INSURED+" text DEFAULT 'Not Specified',"
            +KEY_LAST_ENDORSMENT+" text DEFAULT 'Not Specified',"+KEY_POLICY_HOLDER_NAME+" text DEFAULT 'Not Specified',"+KEY_POLICY_HOLDER_ADDRESS+" text DEFAULT 'Not Specified',"
            +KEY_DATE_TIME_LOSS+" text DEFAULT 'Not Specified',"+KEY_DATE_TIME_INTIMATION+" text DEFAULT 'Not Specified',"
            +KEY_ASSIGNMENT_TYPE+" text DEFAULT 'Not Specified',"+ KEY_MANUFACTURE_YEAR +" text DEFAULT 'Not Specified',"
            + KEY_VEHICLE_MAP +" text DEFAULT 'Not Specified');";

我写入数据库的值不为空。他们有价值观,我检查了它们。

这是我的数据编写方法:

public void addAssignment(Assignment assignment) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_JOB_NUMBER, assignment.getJobNumber()); // Job number
    values.put(KEY_TIME_ASSIGNED, assignment.getTimeAssigned());
    values.put(KEY_TIME_RECEIVED, assignment.getTimeReceived());
    //values.put(KEY_STATUS_READ, assignment.getStatusRead());
    //values.put(KEY_STATUS_COMPLETE, assignment.getStatusComplete());
    values.put(KEY_ACCIDENT_ADDRESS, assignment.getAccidentAddress());
    values.put(KEY_ACCIDENT_LAT, assignment.getAccidentLat());
    values.put(KEY_ACCIDENT_LNG, assignment.getAccidentLng());
    values.put(KEY_VEHICLE_NUMBER, assignment.getVehicleNumber());
    values.put(KEY_ENGINE_NUMBER, assignment.getEngineNumber());
    values.put(KEY_CHASSIS_NUMBER, assignment.getChassisNumber());
    values.put(KEY_VEHICLE_MAKE_MODEL, assignment.getVehicleMakeModel());
    values.put(KEY_DRIVER_NAME, assignment.getDriverName());
    values.put(KEY_DRIVER_CONTACT_NUMBER, assignment.getDriverContactNumber());
    values.put(KEY_POLICY_NUMBER, assignment.getPolicyNumber());
    values.put(KEY_POLICY_STATUS, assignment.getPolicyStatus());
    values.put(KEY_POLICY_PERIOD, assignment.getPolicyPeriod());

    values.put(KEY_SUM_INSURED, assignment.getSumInsured());
    values.put(KEY_LAST_ENDORSMENT, assignment.getLastEndorsment());
    values.put(KEY_POLICY_HOLDER_NAME, assignment.getPolicyHolderName());
    values.put(KEY_POLICY_HOLDER_ADDRESS, assignment.getPolicyHolderAddress());
    Log.d("SK---> INSERT ASSIGNMENT", assignment.getDateTimeLoss() + "----" +assignment.getDateTimeIntimation());
    values.put(KEY_DATE_TIME_LOSS, assignment.getDateTimeLoss());
    values.put(KEY_DATE_TIME_INTIMATION, assignment.getDateTimeIntimation());

    values.put(KEY_ASSIGNMENT_TYPE, assignment.getAssignmentType());
    values.put(KEY_MANUFACTURE_YEAR, assignment.getManufactureYear());
    values.put(KEY_VEHICLE_MAP, assignment.getVehicleMap());

    // Inserting Row
    db.insert(TABLE_ASSIGNMENT, null, values);
    db.close(); // Closing database connection
}

以下是我检索数据的代码。光标的第26个索引给我null。但我检查并100%确定在插入数据时有一个值传递给此列,它不是null。但它没有被写入表格。但所有其他值都写得很成功。

数据检索方法:

public Assignment getAssignment(int id) {
    SQLiteDatabase db = this.getReadableDatabase();

    /*Cursor cursor = db.query(TABLE_ASSIGNMENT, new String[] { KEY_ID, KEY_JOB_NUMBER, KEY_TIME_ASSIGNED, KEY_TIME_RECEIVED, KEY_STATUS_READ,
                    KEY_STATUS_COMPLETE, KEY_ACCIDENT_ADDRESS, KEY_ACCIDENT_LAT, KEY_ACCIDENT_LNG, KEY_VEHICLE_NUMBER, KEY_ENGINE_NUMBER,
                    KEY_CHASSIS_NUMBER, KEY_VEHICLE_MAKE_MODEL, KEY_DRIVER_NAME, KEY_DRIVER_CONTACT_NUMBER, KEY_POLICY_NUMBER,
                    KEY_POLICY_STATUS, KEY_POLICY_PERIOD, KEY_SUM_INSURED, KEY_LAST_ENDORSMENT, KEY_POLICY_HOLDER_NAME, KEY_POLICY_HOLDER_ADDRESS, KEY_DATE_TIME_LOSS, KEY_DATE_TIME_INTIMATION,
                    KEY_ASSIGNMENT_TYPE, KEY_MANUFACTURE_YEAR, KEY_VEHICLE_MAP}, KEY_ID + "=?",
            new String[] { String.valueOf(id) }, null, null, null, null);*/

    Cursor cursor = db.query(TABLE_ASSIGNMENT, null, KEY_ID + "=?",
            new String[] { String.valueOf(id) }, null, null, null, null);

    if (cursor != null)
        cursor.moveToFirst();

    Assignment assignment = new Assignment(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2),
            cursor.getString(3), cursor.getInt(4), cursor.getInt(5), cursor.getString(6), cursor.getDouble(7), cursor.getDouble(8),
            cursor.getString(9), cursor.getString(10), cursor.getString(11), cursor.getString(12), cursor.getString(13), cursor.getInt(14),
            cursor.getString(15), cursor.getString(16), cursor.getString(17), cursor.getString(18), cursor.getString(19), cursor.getString(20),
            cursor.getString(21),cursor.getString(22),cursor.getString(23), cursor.getString(24), cursor.getString(25), cursor.getString(26));

    cursor.moveToFirst();
    for (int i=0; i<27; i++) {
        Log.e("Values : " + i, cursor.getString(i));
    }

    // Return assignment
    cursor.close();
    return assignment;
}

这是logcat的摘录,显示了数据检索方法的打印值:

06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 0: 4
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 1: JB0HEAD1600004889
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 2: 2016-05-09T12:49:33+05:30
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 3: Tue Jun 28 13:47:43 GMT+05:30 2016
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 4: 1
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 5: 0
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 6: RATHNAPURA
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 7: 8.4569
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 8: 85.7563
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 9: 300 6656
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 10: NOT AVAILABLE
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 11: NOT AVAILABLE
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 12: NOT AVAILABLE
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 13: UMASA
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 14: 4225
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 15: PLHEA2016CMC000164
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 16: PAYMENT AUTHORIZED
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 17: 2016-05-02T00:00:00+05:30 2017-05-01T00:00:00+05:30
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 18: 5000
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 19: Not Specified
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 20: A. G. T. D. KUMARA
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 21: NO: 668 / B, UNITY 04, RAJAELA RD, KANTHALE
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 22: 2016-05-09T00:00:00+05:30
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 23: 2016-05-09T00:00:00+05:30
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 24: ST001
06-28 14:13:01.705 14479-14479/com.informaticsint.claimassistant E/Values : 25: 2014
06-28 14:13:01.715 14479-14479/com.informaticsint.claimassistant E/AndroidRuntime: FATAL EXCEPTION: main
                                                                               Process: com.informaticsint.claimassistant, PID: 14479
                                                                               java.lang.NullPointerException: println needs a message
                                                                                   at android.util.Log.println_native(Native Method)
                                                                                   at android.util.Log.e(Log.java:334)
                                                                                   at com.informaticsint.claimassistant.handlers.DatabaseHandler.getAssignment(DatabaseHandler.java:578)
                                                                                   at com.informaticsint.claimassistant.AssignmentDetailsActivity.selectItem(AssignmentDetailsActivity.java:425)
                                                                                   at com.informaticsint.claimassistant.AssignmentDetailsActivity.access$800(AssignmentDetailsActivity.java:72)
                                                                                   at com.informaticsint.claimassistant.AssignmentDetailsActivity$DrawerItemClickListener.onItemClick(AssignmentDetailsActivity.java:302)
                                                                                   at android.widget.AdapterView.performItemClick(AdapterView.java:345)
                                                                                   at android.widget.AbsListView.performItemClick(AbsListView.java:1547)
                                                                                   at android.widget.AbsListView$PerformClick.run(AbsListView.java:3821)
                                                                                   at android.widget.AbsListView$3.run(AbsListView.java:5841)
                                                                                   at android.os.Handler.handleCallback(Handler.java:739)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                   at android.os.Looper.loop(Looper.java:158)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:7224)
                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

感谢任何帮助。我不知道为什么会这样。在此先感谢...

0 个答案:

没有答案