从java中的文本字段准备语句

时间:2015-01-18 19:55:55

标签: java sql prepared-statement parameterized

很抱歉听起来很愚蠢..但我想创建一个准备好的语句来摆脱我的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();

我无法理解如何在这里处理整数类型的东西。 我很感激能得到的所有帮助,因为这让我非常沮丧。

2 个答案:

答案 0 :(得分:1)

您可以先验证输入的输入,如果它通过了条件(数量,有效范围),那么您可以将String转换为int

Integer.parseInt(numberInString)

答案 1 :(得分:1)

从String中获取int应该足够简单。

用以下内容包装应该是int的每个String:

pst.setInt(x, Integer.parseInt(yourVarNameHere));

为了使您的代码更加健壮,您可能应该从String转换为int作为单独的验证步骤,如果传入的String不可解析,它将捕获NumberFormatException。