繁体   English   中英

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 页面获取复选框值以便将其传递给数据库。

我将 checkbox 的变量定义为 String 数组,因为它可以处理一个或多个值。

这就是我在类中定义变量的方式:

public String[] rep;

这是我的 servlet 在 doPost 方法中检索此参数的方式:

String[] rep = request.getParameterValues("rep");

这是我的 DAO 类中来自 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);

如果要使用准备好的语句存储数组值,则应以某种方式格式化字符串,以便在从数据库读取时将其转换回数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM