从java更新Blob时SQL语法出错

时间:2017-06-29 08:09:13

标签: java mysql

public static Boolean userImage(String userIdString, InputStream stream) {

        PreparedStatement statement = null;    
        String updateTableSQL = "UPDATE `users` SET `image` = ? WHERE `id` = ? ;";

        try {

            Integer userId = Integer.parseInt(userIdString);    
            statement = DatabaseManager.getConnection().prepareStatement(updateTableSQL);    
            statement.setBinaryStream(1, stream);
            statement.setInt(2, userId);                
            Log.write("USER IMAGE UPDATED> " + statement);              
            statement.executeUpdate(updateTableSQL);                

            return true;

        } catch (Exception e) {

            Log.write("USER IMAGE UPDATED> " + e.getMessage());    
            return false;

        } finally {

            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }

    }

日志:

  

09:55:59:0496:用户图像更新>   com.mysql.jdbc.JDBC42PreparedStatement@1c902d70:更新users SET   image = ** STREAM DATA ** id = 29;

     

09:55:59:0511:用户图像更新>您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以获得正确的语法   在'附近使用?第1行的id = 29'

1 个答案:

答案 0 :(得分:1)

您使用的是executeUpdate

的错误版本

因为您已经创建了带参数的语句

statement.executeUpdate(updateTableSQL);更改为statement.executeUpdate();