我在microsoft sql server management studio中有一个名为Userdetails的表,其列名为[Email address]
,其数据类型为varchar(50)
。现在,我在jsp中访问此变量,将此变量与另一个名为email2
的变量进行比较,该变量的数据类型为text。不幸的是,我收到错误。
这只是我代码的一部分。
String str=request.getParameter("email2");
ResultSet rs = st.executeQuery("select [Email address],Username from Userdetails where [Email address]='" + str + "');
答案 0 :(得分:1)
第一个问题:您直接在SQL中包含值。不要这样做 - 它只是要求SQL injection attack。
而是使用带参数化值的预准备语句。您可能会发现这足以解决问题。
PreparedStatement pst = conn.prepareStatement
("select [Email address], Username from Userdetails where [Email address]=?");
// This may give the same problem...
pst.setString(1, str);
// but this may fix it
// pst.setClob(1, new StringReader(str));
ResultSet results = pst.executeQuery();
(显然只能以某种方式设置参数。)
不要忘记关闭finally
块中的语句。