gpt4 book ai didi

Java 和prepareStatement 与MySQL

转载 作者:行者123 更新时间:2023-12-01 16:02:44 27 4
gpt4 key购买 nike

我使用 Java 执行一些 SQL 查询。

一般来说,我想要执行的查询是:

set @uid=?; set @friendsList=?; IF EXISTS(select 1 from fb_user_friends join fb_user on " +
" fb_user.id = fb_user_friends.fb_user_id where uid=@uid) then " +
"update fb_user_friends set friends = @friendsList; ELSE insert " +
"into fb_user_friends(fb_user_id,friends) values(@uid,@friendsList); END IF;

我使用以下方式获取 MySQL 连接:

            Class.forName("com.mysql.jdbc.Driver").newInstance();
this._sqlconn = DriverManager.getConnection(this._url,this._userName,this._password);

我尝试执行以下代码:

  String sql="set @uid=?; set @friendsList=?; IF EXISTS(select 1 from fb_user_friends join fb_user on " +
" fb_user.id = fb_user_friends.fb_user_id where uid=@uid) then " +
"update fb_user_friends set friends = @friendsList; ELSE insert " +
"into fb_user_friends(fb_user_id,friends) values(@uid,@friendsList); END IF;";
try {
PreparedStatement stmt = this._sqlconn.prepareStatement(sql);
stmt.setLong(1,uid);
stmt.setString(2,StringUtils.join(friendsList.toArray(), ','));
stmt.executeUpdate();
}catch (SQLException e) ....

我得到了异常(exception):

class com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set @friendsList='110633,2018837,6813007,8803501,10711399,500061635,500214841,50'

我不能使用prepareStatement运行多个命令吗?

我需要找到不同的方法来设置 MySQL 变量 uid 和 FriendsList 吗?

谢谢!

最佳答案

对我来说,这看起来有点像 mysql 存储过程?如果我没记错的话,你应该直接在mysql中注册它。这样,您就可以使用准备好的语句来调用它。

关于Java 和prepareStatement 与MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3413450/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com