我正在尝试通过jtextfield从MySQL表显示搜索结果,但是在我单击"按钮"的按钮之后,它在JTable中没有显示,我想知道为什么,请帮助我解决此错误,谢谢:(
MouseClicked上的按钮代码:
private void btn_cariMouseClicked(java.awt.event.MouseEvent evt) {
if(!inp_npm.getText().isEmpty()){
show_item_in_searchTbl();
} else {
JOptionPane.showMessageDialog(null, "Please fill the empty text!");
}
}
public void show_item_in_searchTbl(){
try{
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zazu_school","root","");
Statement st = conn.createStatement();
String query = "SELECT NPM FROM daftar_mahasiswa WHERE NPM LIKE '%" + inp_npm.getText() + "%'";
ResultSet rs;
rs = st.executeQuery(query);
DefaultTableModel model = (DefaultTableModel)src_mhs_tbl.getModel();
while(rs.next()){
Object[] kolom = new Object[3];
kolom[0] = rs.getInt("ID");;
kolom[1] = rs.getString("Nama");
kolom[2] = rs.getString("NPM");
kolom[3] = rs.getString("Jurusan");
model.addRow(kolom);
}
conn.close();
} catch(SQLException ex){
}
}
程序的图像
欢迎来到stackoverflow:(
拨打以下内容时,错误正在发生:
kolom[0] = rs.getInt("ID");
但是,您的选择语句是:
String query = "SELECT NPM FROM daftar_mahasiswa WHERE NPM LIKE '%" + inp_npm.getText() + "%'";
即。您的getint正在尝试获得从未选择的列的值,因此不在结果集中。
getint的定义行为是扔一个 SQLException
,您可以捕获但不要记录它或任何东西。
解决方案是:
1(修改您的选择以检索所有列
2(添加一些记录等,以正确处理sqlexception
3(条款'%" + inp_npm.getText() + "%'"
正在向SQL注入攻击打开您的SELECT语句,因此使用准备陈述来生成您的语句。