如何使用存储在本地变量中的值更新SQL Table列。
在我的程序中,我使用以下语句从HTML页面中获取了价值:
String idd=request.getParameter("id");
String report=request.getParameter("rprt");
因此,现在我必须更新名为“ ptest”的数据库表中report的值,并且正在使用以下查询:
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/tcs","root","root");
Statement st= con.createStatement();
ResultSet rs;
int i=st.executeUpdate("update ptest set result = @reprt where patient_id=
@idd");
out.println("Successfully Entered");
但是该值未存储在数据库中,而是存储了NULL。
我已经看到了这个问题,没有任何帮助。 Question
如果我是MYSQL新手,请忽略我在这个问题中的错误。
答案 0 :(得分:2)
您可以在Java中使用准备好的语句。
setString或setInt可以在准备好的语句中设置不同的数据类型。
参数1、2基本上是问号的位置。 setString(1,report)表示它将在查询的第一个问号中设置字符串报告。
希望此代码有助于您实现所需的目标。
String query = "update ptest set result = ? where patient_id = ?";
PreparedStatement preparedStatement = con.prepareStatement(query);
preparedStatement.setString(1, report);
preparedStatement.setString(2, idd);
preparedStatement.executeUpdate();
答案 1 :(得分:0)
在JDBC中,您使用?作为您要在语句中插入值的位置的占位符。 所以你应该做这样的事情...
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/tcs","root","root");
PreparedStatement st= con.prepareCall("update ptest set result = ? where patient_id=
?");
///now set the params in order
st.setString(1, report);
st.setString(2, idd);
//then execute
st.executeUpdate();
由于可能会存在sql注入,因此使用值对字符串进行连接是很危险的,因此我通常将语句文本设为static和final,并且如果您的值中包含',可能会破坏sql语法等。另外,请注意使用executeUpdate而不是查询。 希望这会有所帮助