sql查询

5anewei6  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(229)

如何使用存储在局部变量中的值更新sql表列。
在我的程序中,我使用以下语句从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。
我已经看到这个问题,没有得到任何帮助。问题
请忽略我在这个问题上的任何错误,因为我是mysql新手。

vyswwuz2

vyswwuz21#

在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语法的'。希望这有帮助

von4xj4u

von4xj4u2#

您可以在java中使用准备好的语句。
setstring或setint可以在准备好的语句中设置不同的数据类型。
参数1,2基本上是问号的位置。setstring(1,report)意味着它将在查询的第一个问号中设置字符串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();

相关问题