PreparedStatement 类型中的方法 setString(int, String) 不适用于参数 (int, String[])
The method setString(int, String) in the type PreparedStatement is not applicable for the arguments (int, String[])
我知道setString允许在指定位置插入一个值,
现在我想从 jsp 页面获取复选框值,以便将其传递到数据库。
我将复选框的变量定义为字符串数组,因为它可以处理一个或多个值。
这就是我在 class:
中定义变量的方式
public String[] rep;
这是我的 servlet 在 doPost 方法中检索此参数的方式:
String[] rep = request.getParameterValues("rep");
这是我的 DAO class 来自 preparedStatement 查询的一行:
st.setString(3, exam.rep);
但显示此错误:
PreparedStatement 类型中的方法 setString(int, String) 不适用于参数 (int, String[])
整个查询
public static void add(Exam exam) throws ClassNotFoundException, SQLException {
Connection cnx;
cnx = Connect.getConnection();
String req = "insert into examen values (?,?,?)";
PreparedStatement st = cnx.prepareStatement(req);
st.setString(1, exam.titre);
st.setString(2, exam.question);
st.setString(3, exam.rep);
st.executeUpdate();
}
如果您能向我们展示您的 SQL 查询,将会有所帮助。准备好的语句采用单个值,而不是数组。当您将第一个参数定义为查询中 ?
的索引时,将替换为相应的第二个参数。这样的东西可能会满足您的需求;
String stmt = "INSERT INTO abc (some_field) VALUES (?);";
PreparedStatement ps = conn.prepareStatement(stmt);
String formatted = String.join(",", items);
ps.setString(3, formatted);
如果您想使用准备好的语句存储数组值,那么您应该以某种方式格式化您的字符串,以便在从您的数据库中读取时可以将其转换回数组。
我知道setString允许在指定位置插入一个值, 现在我想从 jsp 页面获取复选框值,以便将其传递到数据库。
我将复选框的变量定义为字符串数组,因为它可以处理一个或多个值。
这就是我在 class:
中定义变量的方式public String[] rep;
这是我的 servlet 在 doPost 方法中检索此参数的方式:
String[] rep = request.getParameterValues("rep");
这是我的 DAO class 来自 preparedStatement 查询的一行:
st.setString(3, exam.rep);
但显示此错误: PreparedStatement 类型中的方法 setString(int, String) 不适用于参数 (int, String[])
整个查询
public static void add(Exam exam) throws ClassNotFoundException, SQLException {
Connection cnx;
cnx = Connect.getConnection();
String req = "insert into examen values (?,?,?)";
PreparedStatement st = cnx.prepareStatement(req);
st.setString(1, exam.titre);
st.setString(2, exam.question);
st.setString(3, exam.rep);
st.executeUpdate();
}
如果您能向我们展示您的 SQL 查询,将会有所帮助。准备好的语句采用单个值,而不是数组。当您将第一个参数定义为查询中 ?
的索引时,将替换为相应的第二个参数。这样的东西可能会满足您的需求;
String stmt = "INSERT INTO abc (some_field) VALUES (?);";
PreparedStatement ps = conn.prepareStatement(stmt);
String formatted = String.join(",", items);
ps.setString(3, formatted);
如果您想使用准备好的语句存储数组值,那么您应该以某种方式格式化您的字符串,以便在从您的数据库中读取时可以将其转换回数组。