Java PreparedStatement execute()不';不要影响数据库
我在使用jdbc将数据插入mysql数据库时遇到问题。 当向数据库添加新用户时,我会获得一个新连接,创建一个准备好的语句并执行查询。但是,数据库中没有显示任何结果 例如,假设我使用MySql查询浏览器在数据库中手动添加了一个新用户Java PreparedStatement execute()不';不要影响数据库,java,mysql,database,jdbc,Java,Mysql,Database,Jdbc,我在使用jdbc将数据插入mysql数据库时遇到问题。 当向数据库添加新用户时,我会获得一个新连接,创建一个准备好的语句并执行查询。但是,数据库中没有显示任何结果 例如,假设我使用MySql查询浏览器在数据库中手动添加了一个新用户 我添加了一个新的用户-->name=Stefano,pin=1010 生成一个自动递增id:id=1 假设我决定添加一个新的用户程序: 我调用addUser方法(stringusername,intpin)->addUser(“pippo”,7636) 没有错误
- 我添加了一个新的用户-->name=Stefano,pin=1010
- 生成一个自动递增id:id=1
- 我调用addUser方法(stringusername,intpin)->addUser(“pippo”,7636)李>
- 没有错误发生
- 我打开MySql查询浏览器,没有添加任何用户
您需要使用executeUpdate()而不是execute() int executeUpdate(字符串sql) 抛出SQLException 执行给定的SQL语句,该语句可以是INSERT、UPDATE或SQL语句 DELETE语句或不返回任何内容的SQL语句,例如 SQLDDL语句 布尔执行(字符串sql) 抛出SQLException execute方法执行SQL语句并指示 第一个结果。然后必须使用getResultSet或 getUpdateCount检索结果,getMoreResults移动到 任何后续结果
您禁用了连接池中的自动提交功能(说真的:不要使用自己的,使用现有的,它们会做得更好) 您从未在代码中的任何地方调用commit,因此结果从未提交(最终当连接真正关闭或丢失时,更改将回滚) 我的忠告是:
commit()
(或rollback()
)调用
executeUpdate
而不是executeUpdate
会起作用(我确信一些JDBC实现实际上从executeUpdate
调用了它们的executeUpdate
实现)。我也尝试过使用executeUpdate(),但结果是一样的:/是的,你说得对:真是个错误!!!!谢谢,我真的忘记提交更改了。