如何使用JAVA handle createStatement INNO DB更新sql varchar列
我需要使用JAVA句柄和create语句来更新我的列,但是根据我所研究的,如果我想要更新的是所有(或大部分)列,我需要使用批处理 这是我迄今为止编写的代码:如何使用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
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