java - 无法将条目放入mysql数据库

标签 java mysql sql swing

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_typemd_by型号purchase_datevouch_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/

相关文章:

java - 如何让 matcher.find while 循环写入文本文件? java

python - sqlalchemy 过滤器中的安全参数绑定(bind)

java - 为什么扫描仪输入在这种特定情况下显示错误?

java - 流口水 6 : add rules to a running KieSession

php - 链接数据库和stmt并准备

php - 在 PHP 中将数据从 SQL 转换为字符串

mysql - 为 MyDAC 定义自定义 POST 方法

sql - Oracle SQL 顺序组号赋值

SQL Server : SELECT when 2 values exist in rows

java - 如何从html表及其内部表中提取数据?