0
String sql = "update `library`.`memebers` set 'STATUS'='" + "1" +"' where mem_id = '"+str+"'";

int i = st.executeUpdate(sql);

上記の 2 行目のエラー:

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 ''status' = '1' where mem_id = '656597'' at line 1
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2618)
        at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1749)
        at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1666)
        at Frames.Addmembers.jButton1ActionPerformed(Addmembers.java:181)
        at Frames.Addmembers.access$000(Addmembers.java:21)
        at Frames.Addmembers$1.actionPerformed(Addmembers.java:83)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
4

2 に答える 2

0

status は列の名前であるため、 statusまたは`status`のいずれかにする必要があります。

エンティティは、プレーンに記述されるか、または `` で引用されます。(アポストロフィではなく、バッククォート。)

列名に予約済みのフィールド名を使用していない限り (使用すべきではありません)、フィールドを引用符で囲む必要はありません。

String sql = "update library.memebers set STATUS = 1 where mem_id = " + Integer.valueOf(str);

status と mem_id を囲む引用符を削除したことに注意してください。どちらも整数フィールドであると想定しています。もしそうなら、それらの値を引用すべきではありません。整数フィールドには、整数値に評価される文字列ではなく、整数値が必要です。(ただし、盲目的に文字列が整数であると仮定して、それをクエリに連結したくないことに注意してください。最初に適切な整数であることを常に確認してください)

于 2012-04-03T20:45:46.660 に答える
0

一重引用符で囲まれたフィールド名。引用符を付けないか、一重引用符で囲む必要があります: ```:

String sql = "update library.memebers set `STATUS`='1' where mem_id = '"+str+"'";
于 2012-04-03T20:47:27.670 に答える