捕获到异常:java.sql.SQLException:不正确的整数值:

时间:2013-01-16 19:45:40

标签: java mysql sql

错误:

  

捕获到异常:java.sql.SQLException:不正确的整数值:'[Ljava.lang.String; @ 26fd19c6'代表第1行的'dedId'列无法连接数据库

程序

public void updateDeduction(int empId, String[] dedId, String dedName, String dedDate, String dedAmount) throws SQLException{
    stmt = conn.createStatement();
    String updateString="INSERT INTO deductions (empId,dedId,dedName,dedDate,dedAmount) VALUES (";
    updateString +="'"+empId+"', ";
    updateString +="'"+dedId+"', "; 
    updateString +="'"+dedName+"', ";
    updateString +="'"+dedAmount+"', ";
    updateString +="CURDATE())" ;
    stmt.executeUpdate(updateString); 
    return;
}

1 个答案:

答案 0 :(得分:2)

参数dedid是字符串的数组。执行时

updateString +="'"+dedId+"', ";

它被转换为字符串[Ljava.lang.String;@26fd19c6

您需要弄清楚要使用哪些数组元素。

正如其他人所评论的那样,通过连接用户提供的文本来构建语句是一种通过SQL Injection进行攻击的可靠方法。您应该使用PreparedStatement代替占位符,即

INSERT INTO deductions (empId,dedId,dedName,dedDate,dedAmount) VALUES (?,?,?,?,?)