Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
捕获到异常:java.sql.SQLException:不正确的整数值:_Java_Mysql_Sql - Fatal编程技术网

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

捕获到异常: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

错误:

捕获到异常: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;
}

参数
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。