准备好的语句的 Java ExecuteUpdate 方法挂起

标签 java mysql jdbc prepared-statement

所以我一直在努力让某个准备好的语句能够将值插入到我的数据库中。作为引用,我使用 MySQL server 5.5 和 Connector/J 作为我的数据库 + 驱动程序。

我尝试运行以下代码:

     sql = "INSERT INTO event "
+ "( ename, description, edatetime, location, is_public_e,sponsored_by)"+"VALUES ( ?, ?, ?, ?, ?,?);";                          
                        PreparedStatement a1 = con.prepareStatement(sql);                                           
                        a1.setString(1, ename.toString());
                        a1.setString(2, desc.toString());
                        a1.setString(3, date);
                        a1.setString(4, location.toString());
                        a1.setInt(5, pub);
                        a1.setString(6, clubid.toString());
                        a1.executeUpdate();

其中 ename、description 和 location 是字符串,edatetime 是日期时间,is_public 是 boolean 值,sponsored_by 是整数。无论我使用什么数据,通过 eclipse 运行此代码都会导致 executeUpdate() 行无限期挂起。

但是,使用相同的数据,我可以通过服务器命令行插入事件。更奇怪的是其他插入语句可以完美地工作。我认为问题可能出在日期时间转换上,但将日期时间硬编码到语句中仍然导致挂起。

任何人都可以深入了解为什么会发生这种情况吗?

现在我唯一的想法是它是我的服务器 + 驱动程序配置,但我在我的笔记本电脑上重新下载了软件,问题仍然存在,所以我认为这不是问题。我还假设我可以在准备好的语句中使用的通配符没有限制,但是如果有可能会导致问题吗?此外,在代码的前面,我将连接设置为自动提交,但我不确定我的驱动程序是否支持它,并且考虑到我的其他插入工作的事实,我不确定这是否是问题所在。

感谢您的帮助!

最佳答案

所以我通过准备声明解决了这个问题:

a1.setString(1, ename);
a1.setString(2, desc);
a1.setString(3, date + " " + time);
a1.setString(4, location);
a1.setInt(5, 1);
a1.setInt(6, cid);

我认为这是通过将日期时间重新格式化为 yyyy-mm-dd hh:mm:ss 格式来解决的,我认为这是格式化的,没有正确抛出 sqlException。

关于准备好的语句的 Java ExecuteUpdate 方法挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29851533/

相关文章:

java - InetAddress java 8 没有获取主机名

java - 使用 POI 的 XSSF 和 SAX(事件 API)读取 Excel 工作表

mysql - 如果值为 no,则选择其他

postgresql - 无法使用JDBC将Postgres导入Spark中,但显示Hive警告

java - JDBC 使用批处理删除和插入

java - 重新生成 SHA-1 哈希值与存储的数据库哈希值不匹配

java - 使用 Java 和 vector 对象在正确位置显示球时遇到问题

c# - 为什么我在 C# WinForms 到 MySQL 数据库的 SELECT 语句中出现此错误?

MySql选择用户添加的用户

java - 如何在 Java JDBC 中处理异常?