【发布时间】:2015-01-18 19:55:54
【问题描述】:
抱歉听起来很愚蠢..但我想创建一个准备好的语句来摆脱我的 java 项目中的注入。问题是我似乎不明白如何将文本框数据中的 int 转换为 String 并在语句中使用它。我已经研究了几个小时,但一无所获!这是我的注入代码:
this.sql_Query = "update customer set cust_id ='" +
String.valueOf(txtcust_id.getText()) + ",'" + txtcust_name.getText() +
"','" + txtf_name.getText() + "','" + txtb_date.getText() + "' , '" +
txtcnic.getText() + "','" + txtcity.getText() + "','" +
txtcard_num.getText() + "',,'" + txtacc_num.getText() + "',,'" +
txtb_n.getText() + "',,'" + txtadd.getText() + "',,'" +
txtemail.getText() + "','" + txtph_num.getText() + "' )";
这就是我把它转换成的:
String query = "INSERT INTO customers( cust_id , cust_name , father_name, birth_date, CNIC,"
city, card_num, acc_num, bank_name, address , email, ph_num ) values (?,?,?,?,?,?,?,?,?,?,?,?);
pst = conn.prepareStatement(query); // create a statement
pst.setInt(1, cust_id); // set input parameter 1
pst.setString(2, "cust_name"); // set input parameter 2
pst.setString(3, "father_name"); // set input parameter 3
pst.setDate(4, birth_date );
pst.setBigint(5, CNIC);
pst.setString(6, "city");
pst.setBigint(7, card_num);
pst.setBigint(8, acc_num);
pst.setString(9, "bank_name");
pst.setString(10, "address");
pst.setString(11, "email");
pst.setBigint(12, ph_num);
pstmt.executeUpdate();
我不明白如何处理这里的整数类型的东西。 我会很感激我能得到的所有帮助,因为这让我很沮丧。
【问题讨论】:
-
为什么要在表中插入列名?此外,您在解析为
int后调用setInt()设置一个整数值。 -
大多数数据库驱动程序允许在数字列上调用 setString,但您不应该依赖它。尤其是如果这是您需要验证的用户数据。
标签: java sql prepared-statement parameterized