private void B_save_pActionPerformed(java.awt.event.ActionEvent evt) {
try{
String db = "jdbc:mysql://localhost/ar";
Connection con = DriverManager.getConnection(db, "rehan", "1234");
PreparedStatement ps;
String sql = "INSERT INTO purchase (item_type, md_by, model, selling_price, purchase_price, purchase_date, item_image, vouch_no, vouch_date) VALUES ('?', '?', '?', ?, ?, '?', ?, ?, '?');" ;
ps = con.prepareStatement(sql);
ps.setString(1 , txt_itype_p.getText());
ps.setString(2, txt_md_by_p.getText());
ps.setString(3, txt_model_p.getText());
ps.setString(4, txt_s_price_p.getText());
ps.setString(5 , txt_p_price.getText());
ps.setString(6, null);
ps.setString(7, null);
ps.setString(8, txt_vouch_p.getText());
ps.setString(9 , null);
ps.execute();
}
catch(SQLException ex){
JOptionPane.showMessageDialog(null, ex);
}
DefaultTableModel tblModel = (DefaultTableModel) Table_p.getModel();
if(!txt_itype_p.getText().trim().equals("")) {
tblModel.addRow(new Object[]{tbl_sr, txt_itype_p.getText(),txt_model_p.getText(),txt_md_by_p.getText(),txt_date_p.getText(),txt_p_qty.getText(),txt_p_price.getText(),txt_s_price_p.getText()});
txt_itype_p.setText(null);
txt_ipath.setText(null);
txt_itype_p.setText(null);
txt_md_by_p.setText(null);
txt_model_p.setText(null);
txt_p_date.setText(sdf.format(date));
txt_p_price.setText(null);
txt_p_qty.setText(null);
txt_s_price_p.setText(null);
}
tbl_sr = tbl_sr +1;
saved = true;/*If someone accidently click the close button, system will
confirm while getting the value of this bolean variable*/
}
这是我的保存按钮代码,它应该显示 JFrame 中 JTable 上的条目,并将条目保存到“购买”表中的 mysql 数据库中,但问题是它显示了 JTable 上的条目但是不保存在数据库中。我有相同的代码来创建新用户,将用户名、密码和帐户类型保存在数据库的登录表中,并且该代码工作正常。我觉得这个问题是由于某些数据类型问题引起的,但我没有得到证实。 我正在使用 Netbeans 和 mysql 数据库。我尝试将“null”发送到日期和图像数据类型,但仍然无法正常工作。 有人请帮助我。
最佳答案
这一行有问题:
String sql = "INSERT INTO purchase (item_type, md_by, model, selling_price, purchase_price, purchase_date, item_image, vouch_no, vouch_date) VALUES ('?', '?', '?', ?, ?, '?', ?, ?, '?');" ;
问题是用单引号括起来的五个 ?
。 JDBC 不将它们识别为占位符,并假定您要将仅包含 ?
字符的字符串插入到 item_type
、md_by
、型号
、purchase_date
和vouch_date
列。
修复方法是删除 ?
标记周围的所有单引号:
String sql = "INSERT INTO purchase (item_type, md_by, model, selling_price, purchase_price, purchase_date, item_image, vouch_no, vouch_date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);" ;
关于java - 无法将条目放入mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23138945/