我正在尝试使用mysql db和javafx应用程序在db中创建插入方法。但是我在插入db时遇到了一些问题,它总是向我显示NPE,我试图在旧帖子上搜索解决方案,但是与我的问题没有任何相似之处,我希望任何人都可以提出链接,如果有解决此问题的方法。
BeliTiketController.java
@FXML
private void btnSimpanBeliAction(ActionEvent event) throws ClassNotFoundException, SQLException {
//Mengecek field kosong
if (fieldKtp.getText().isEmpty() || fieldNamaPenumpang.getText().isEmpty() ||
tanggalBerangkat.getValue().toString().isEmpty() || jamBerangkat.getValue().toString().isEmpty() ) {
Alert fieldKosong = new Alert(Alert.AlertType.WARNING);
fieldKosong.setTitle("Perhatian");
fieldKosong.setHeaderText("Form Kosong");
fieldKosong.setContentText("Harap Mengisi Semua Field !!!");
fieldKosong.showAndWait();
} else {
String jk = "";
if (radioEkse.isSelected()) {
jk = radioEkse.getText();
}
if (radioBisnis.isSelected()) {
jk = radioBisnis.getText();
} if(radioEkonomi.isSelected()){
jk = radioEkonomi.getText();
}
String labelBayar = labelTotalBayar.getText();
int bayar = Integer.parseInt(labelBayar);
//line 148
TiketDAO.insertTiket(fieldKtp.getText(), fieldNamaPenumpang.getText(),
comboAsal.getValue(), comboTujuan.getValue(), comboKodeKereta.getValue(), fieldNamaKereta.getText(),
spinTiket.getValue(), bayar, tanggalBerangkat.getValue(), jamBerangkat.getValue());
// Menampilkan dialog box informasi
Alert alertSimpan = new Alert(Alert.AlertType.INFORMATION);
alertSimpan.setTitle("Kampus App - Informasi");
alertSimpan.setHeaderText("Informasi Simpan Data");
alertSimpan.setContentText("Simpan data ke database berhasil !");
alertSimpan.showAndWait();
DashboardController.getInstance().loadData(); //memanggil method loadData() dari DashboardController
btnSimpanBeli.getScene().getWindow().hide(); //Menutup scene AddMahasiswa.fxml
}
}
TiketDAO.java
public class TiketDAO {
//method insertTiket
public static void insertTiket(String ktp, String nama, String st_asal, String st_tujuan, String kelas_kereta,
String nama_kereta, int jumlah_tiket, int total_harga, LocalDate tanggal_berangkat, LocalTime jam_berangkat) throws SQLException, ClassNotFoundException{
//Buat Query
String beliTiket =
"INSERT INTO `order_tiket` (`no_ktp`, `nama_penumpang`, `stasiun_asal`, `stasiun_tujuan`,"
+ "`kelas_kereta`, `nama_kereta`, `jumlah_tiket`, `total_harga`, `tanggal_berangkat`, `jam_berangkat`)"
+ " VALUES ('"+ktp+"', '"+nama+"', '"+st_asal+"', '"+st_tujuan+"', '"+kelas_kereta+"',"
+ "'"+nama_kereta+"', '"+jumlah_tiket+"', '"+total_harga+"', '"+tanggal_berangkat+"', '"+jam_berangkat+"')";
try {
DBConfig.dbExecuteUpdate(beliTiket); //Line 25
} catch (SQLException e) {
System.out.println("Ada Kesalahan saat input data ke Database" + e);
}
}
}
DBConfig.java
public static void dbExecuteUpdate(String sqlSmt) throws SQLException, ClassNotFoundException{
//Deklarasi
Statement stmt = null;
try {
dbConnect();
stmt = conn.createStatement(); //Line 74
stmt.executeUpdate(sqlSmt);
} catch (SQLException e) {
System.out.println(e);
}finally{
dbDisconnect();
}
}
}
错误消息
Caused by: java.lang.NullPointerException
at Database.DBConfig.dbExecuteUpdate(DBConfig.java:74)
at DAO.TiketDAO.insertTiket(TiketDAO.java:25)
at Controller.BeliTiketController.btnSimpanBeliAction(BeliTiketController.java:148)
... 120 more
如果有人可以放一些链接以供参考,我已经非常尊重我已经搜索了stackoverflow,但是没有找到它。.