繁体   English   中英

如何从Java向MySQL插入自动增量值

[英]How to insert auto increment values to mysql from java

     try
    {
        String ptype = null;
        if(b1.isSelected())
        {
            ptype="cash";
        }
        else if(b2.isSelected())
        {
            ptype="cred";
        }    


        String rID=ridt.getText();
        String cID=cidt.getText();
        double Rcharge=Double.parseDouble(rct.getText());
        double Mcharge=Double.parseDouble(mct.getText());
        double total=Double.parseDouble(tott.getText());
        double sum=Double.parseDouble(casht.getText());
        double change=Double.parseDouble(balt.getText());


        String sql0 ="INSERT INTO transactions(transaction_id,reservation_id,cus_id,room_charges,meal_charges,total_amount,cash,change,payment_type,emp_id)values('"+?+"','"+rID+"','"+cID+"','"+Rcharge+"','"+Mcharge+"','"+total+"','"+sum+"','"+change+"','"+ ptype+"','e010')";
        pst=conn.prepareStatement(sql0);
        pst.execute();

    }
    catch(NumberFormatException | SQLException e)
    {
        System.out.println(e);
    } 

在上面的sql语句中transaction_id是一个自动递增字段。 如何将该值插入表格? 如果我在代码中保留了该值,是否会将其添加到数据库的表中?

auto increment意味着当records插入到表中时该field自动递增。 如果要自定义输入id到字段transaction_id ,请将其字段类型更改为inttinyint或其他类型,具体取决于传递值的类型。

如果该字段映射为auto_increment,则不应在查询中传递该字段,而应在数据库级别进行。
另外,如果您正在使用prepareStatment ,请正确使用它。
在prepareStatement中,如果要使用create语句执行此操作,请不要在查询中直接传递动态值。
在安全性方面,PreparedStatments更好,请检查此以供参考Statement和PreparedStatement之间的区别
请检查修改后的代码,我删除了自动生成的字段,并进行了查询,因为它应该用于prepareSatements

        String rID=ridt.getText();
        String cID=cidt.getText();
        double Rcharge=Double.parseDouble(rct.getText());
        double Mcharge=Double.parseDouble(mct.getText());
        double total=Double.parseDouble(tott.getText());
        double sum=Double.parseDouble(casht.getText());
        double change=Double.parseDouble(balt.getText());


        String sql0 ="INSERT INTO transactions(reservation_id,cus_id,room_charges,meal_charges,total_amount,cash,change,payment_type,emp_id)values(?,?,?,?,?,?,?,?,?)";

        preparedStatement.setString(1, "Test");
        preparedStatement.setInt(1, 44);
        // repeat the above two based on your requirement and datbase field


        pst=conn.prepareStatement(sql0);
        pst.execute();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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