捕获到异常:java.sql.SQLException:不正确的整数值:
错误: 捕获到异常:java.sql.SQLException:整数值不正确:'[Ljava.lang.String;@26fd19c6'对于第1行的列“dedId”,无法连接数据库 节目:捕获到异常:java.sql.SQLException:不正确的整数值:,java,mysql,sql,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.createStatem
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;
}
参数
dedid
是一个字符串数组
updateString +="'"+dedId+"', ";
它被转换为字符串[Ljava.lang.string;@26fd19c6
您需要确定要使用哪些数组元素
正如其他人所评论的,通过像这样连接用户提供的文本来构建语句肯定会被黑客攻击。您应该使用PreparedStatement
,而不是使用占位符,即
INSERT INTO deductions (empId,dedId,dedName,dedDate,dedAmount) VALUES (?,?,?,?,?)
-不要将您的SQL语句连接在一起—这只是自找麻烦……我不明白为什么会显示SQL异常?Zain+1@marc_si尝试过这个方法,但它给了我相同的错误。关于SQL注入和使用
PreparedStation
,它会自动删除任何不安全的字符吗?还是仍然保留对于程序员来说,“不安全字符”的存在是无关紧要的,因为值不会被替换到SQL文本中。它们直接进入文本值,并且不能修改SQL。