Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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 Mysql更新错误,语句为prepared_Java_Mysql_Sql Update_Prepared Statement - Fatal编程技术网

Java Mysql更新错误,语句为prepared

Java Mysql更新错误,语句为prepared,java,mysql,sql-update,prepared-statement,Java,Mysql,Sql Update,Prepared Statement,我正在处理一个java项目,需要更新mysql数据库中的一行。 我使用的是preparedStatement,但确实出现了一个错误。我试着使用just语句,它起作用了。但是我需要在我的sql语句中设置一些数据。所以我必须使用准备好的报表。 怎么了 所以我有一个4列的数据库:整数id(AI)、布尔值monf2d、Varchar monf2p和Varchar monf2a。数据库有2行,我想更新第一行,id 1 第1版(含预编制报表): 专用连接; 公开无效测试(){ 编制报表; String sq

我正在处理一个java项目,需要更新mysql数据库中的一行。 我使用的是preparedStatement,但确实出现了一个错误。我试着使用just语句,它起作用了。但是我需要在我的sql语句中设置一些数据。所以我必须使用准备好的报表。 怎么了

所以我有一个4列的数据库:整数id(AI)、布尔值monf2d、Varchar monf2p和Varchar monf2a。数据库有2行,我想更新第一行,id 1

第1版(含预编制报表):

专用连接;
公开无效测试(){
编制报表;
String sql=“更新路由集monf2d=true,monf2p='Data1',monf2a='Data2',其中id=?”;
试一试{
this.connection=ServerConnection.getConnection();
pr=this.connection.prepareStatement(sql);
pr.setInt(1,1);
pr.executeQuery();
}捕获(SQLE异常){
e、 printStackTrace();
}
}
第二版,带准备好的报表:

专用连接;
公开无效测试(){
报表st;
String sql=“更新路由集monf2d=true,monf2p='Data1',monf2a='Data2',其中id=1”;
试一试{
this.connection=ServerConnection.getConnection();
st=this.connection.createStatement();
st.execute(sql);
}捕获(SQLE异常){
e、 printStackTrace();
}
}
当我使用带有preparedStatement的版本时,会出现此错误

java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
    at com.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:469)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1968)
    at dbUtil.ServerSync.test(ServerSync.java:224)
    at adminapp.AdminController.initialize(AdminController.java:55)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2425)
    at loginapp.LoginController.adminLogin(LoginController.java:107)
    at loginapp.LoginController.login(LoginController.java:89)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Node.fireEvent(Node.java:8411)
    at javafx.scene.control.Button.fire(Button.java:185)
    at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
    at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:394)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$358(GlassViewEventHandler.java:432)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:410)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:431)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
    at com.sun.glass.ui.View.notifyMouse(View.java:937)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$152(WinApplication.java:177)
    at java.lang.Thread.run(Thread.java:748)

要在出现语句时更新表,必须使用executeUpdate()方法

而不是使用

st.execute(sql);
使用下面的

st.executeUpdate(sql);
对于PreparedStatement,必须使用executeUpdate()方法

要了解有关语句和PreparedStation中方法的更多详细信息,请查看下面的链接。


使用pr.executeUpdate(sql),而不是使用pr.executeQuery()。它应该像一个符咒


我们使用executeQuery()进行“选择”类型的查询,但为了执行对表进行修改的查询,请使用“executeUpdate”或“executeLargeUpdate”(如果要修改大量行)方法

!以前从未见过此功能。非常感谢。您确定这适用于准备好的报表吗?我认为op应该使用无参数executeUpdate()函数。很好的建议Jens先生。你的建议不适用于准备好的语句。我可以看看你尝试了什么吗?我可以自己尝试并帮助您修复它。删除execute()中的参数,它应该可以工作。看见