简体   繁体   中英

How do i handle an empty jXDatePicker?

I have a swing form which includes jXDatePicker to capture dates. When a date is not selected in the jXDatePicker an error is thrown when the trying to inserting the date into the database. Below is the error I am getting in Netbeans: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException. Below is the code that is giving me errors:

    String dateOpened, dateOfLastUpdate, dateOf1stDelinquency, dateOfLastPayment,  dateClosed;
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    dateOpened = format.format(jXDatePicker7.getDate());
    dateOfLastUpdate = format.format(jXDatePicker2.getDate());
    dateOf1stDelinquency = format.format(jXDatePicker4.getDate());
    dateOfLastPayment = format.format(jXDatePicker5.getDate());
    dateClosed = format.format(jXDatePicker6.getDate());

String query2 = "insert into ACCOUNT (ACCOUNT_NUMBER,DATE_CLOSED ,DELINQUENCY_DATE,     UPDATE_DATE,AMOUNT_OWING,"
                + "BALANCE,PAYMENT_HISTORY,ACCOUNT_STATUS,MONTHLY_PAYMENT,TERMS_DURATION,PRINCIPAL,CREDIT_LIMIT,"
                + "DATE_OPENED,PORTIFOLIO_TYPE,ACCOUNT_TYPE,NATIONAL_ID,COSIGNER_NATIONAL_ID)"
                + "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        PreparedStatement preparedStatement2 = con.prepareStatement(query2);
        preparedStatement2.setString(1, acc_no);
        preparedStatement2.setString(2, dateClosed);
        preparedStatement2.setString(3, dateOf1stDelinquency);
        preparedStatement2.setString(4, dateOfLastUpdate);
        preparedStatement2.setDouble(5, amount_owing);
        preparedStatement2.setDouble(6, current_balance);
        preparedStatement2.setString(7, payment_history);
        preparedStatement2.setString(8, account_status);
        preparedStatement2.setDouble(9, monthly_payment);
        preparedStatement2.setDouble(10, terms_duration);
        preparedStatement2.setDouble(11, principal);
        preparedStatement2.setDouble(12, credit_limit);
        preparedStatement2.setString(13, dateOpened);
        preparedStatement2.setString(14, portfolio_type);
        preparedStatement2.setString(15, acc_type);
        preparedStatement2.setString(16, national_id);
        preparedStatement2.setString(17, cosigner_national_id);
        preparedStatement2.executeUpdate();

Some dates are not required and applicable on some instances, therefore the user cannot select a date under such circumstances.

Check each individual JXDatePicker's date like jXDatePicker2.getDate() for null. Do not call format.format if that date does happen to be null. I get that exact same error you mentioned on the format.format line if the date is empty and enter is pushed. Instead, go for some default time, like new Date(0); meaning:

format.format(new Date(0));

Use following code and make sure that dateOpened column in database accept NULL values.

DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
if(jXDatePicker7.getDate() != null){
      dateOpened = format.format(jXDatePicker7.getDate());
}else{
   dateOpened = null;
}

If you don't want to insert NULL value then show error message as

 DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
 if(jXDatePicker7.getDate() != null){
       dateOpened = format.format(jXDatePicker7.getDate());
 }else{
    //error
 }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM