[英]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
,请将其字段类型更改为int
, tinyint
或其他类型,具体取决于传递值的类型。
如果该字段映射为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.