Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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 handle createStatement INNO DB更新sql varchar列_Java_Mysql - Fatal编程技术网

如何使用JAVA handle createStatement INNO DB更新sql varchar列

如何使用JAVA handle createStatement INNO DB更新sql varchar列,java,mysql,Java,Mysql,我需要使用JAVA句柄和create语句来更新我的列,但是根据我所研究的,如果我想要更新的是所有(或大部分)列,我需要使用批处理 这是我迄今为止编写的代码: private int deletePlayer(Handle handle, String username, String table) { logger.debug("Deleting from table " + table); String sqlCommand; sqlCommand = String

我需要使用JAVA句柄和create语句来更新我的列,但是根据我所研究的,如果我想要更新的是所有(或大部分)列,我需要使用批处理

这是我迄今为止编写的代码:

private int deletePlayer(Handle handle, String username, String table) {
    logger.debug("Deleting from table " + table);
    String sqlCommand;

     sqlCommand = String.format("UPDATE %s SET rank = 1 "
            + "SET level = 1 "
            + "SET exp = 0 "
            + "SET prof = '' "
            + "SET guild = '' "
            + "SET varname = '' "
            + "WHERE name = :username", table);

    handle.createStatement(sqlCommand)
            .bind("username", username)
            .execute();        
    return 1;
}
我将其分解,试图找出问题所在,发现MySQL命令:

sqlCommand = String.format("UPDATE %s SET varname = '' WHERE name = :username", table);
而类似的做法是行不通的。这很可能是因为字符串/字符串联

另外,我应该使用批处理吗


堆栈跟踪:[Ljava.lang.StackTraceeElement;@15b2043


请,如果你要写这篇文章,请告诉我为什么,我会非常乐意按照你的喜好修改它,或者澄清它,以便它遵守论坛行为/服务条款/等等。

我想你错过了更新DB值的关键字集之间的逗号

sqlCommand = String.format("UPDATE %s SET rank = 1 "
        + "SET level = 1, "
        + "SET exp = 0, "
        + "SET prof = '', "
        + "SET guild = '', "
        + "SET varname = '' "
        + "WHERE name = :username", table);

你应该使用一个update语句来更新所有列。你所做的事情太荒谬了。并且使用
PreparedStatement
,而不是常规的
语句。它不会解决字符串问题。但是它会解决可怕的代码气味。此外,你没有说任何正在发生的事情。你有什么异常吗?stacktrace?“不起作用”没有多大帮助。是的,我得到了一个stacktrace。为了反求,我将它分解,并指出问题来自更新VARCHARs,而不是IntegerStack跟踪:[Ljava.lang.StackTraceeElement;@15b2043