2012-04-03 1 views
0
String sql = "update `library`.`memebers` set 'STATUS'='" + "1" +"' where mem_id = '"+str+"'"; 

int i = st.executeUpdate(sql); 

Ошибка во 2-й строке выше:Получение ошибки в заявлении обновления при доступе к MySQL из Java

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) 
+1

Это проблема SQL. Я на 99,9% уверен, что это не имеет ничего общего с Java. Вы должны сделать распечатку с фактическим запросом, который вы отправляете в mysql. – ControlAltDel

+0

. Вы уверены: library.memebers вместо library.members – lkdg

ответ

0

Имя поля в одинарных кавычках. Он должен быть либо без кавычек, либо внутри одиночных кавычек: `` `:

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

Несмотря на то, что с вышеуказанными исправлениями, я не получаю никаких ошибок. Но все же база данных не обновляется. – Manish

0

статуса является имя столбца, и как таковой, он должен быть либо статус или `статус`.

Объекты либо написаны просто, либо они цитируются как ``. (Backticks, а не апострофы.)

Если вы не используете зарезервированные имена полей для имен столбцов (которые вы не должны делать), вам не нужно указывать поля.

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

Обратите внимание, что я удалил кавычки вокруг состояния и mem_id. Я предполагаю, что оба являются целыми полями, и если они есть, вы не должны указывать их значения. Целочисленные поля должны иметь целочисленные значения, а не строки, которые оцениваются целыми значениями. (Обратите внимание, что вы никогда не захотите просто слепо предположить, что строка является целым числом и объединяет ее в запрос - всегда убедитесь, что это правильное целое число)

+0

Несмотря на то, что с вышеуказанными исправлениями я не получаю никаких ошибок. Но все же база данных не обновляется. – Manish

+0

@Manish Я бы удостоверился, что mem_id соответствует чему-то в таблице. Как кто-то предложил в комментарии, вы можете захотеть откликнуться на SQL и попытаться запустить его вручную. – Corbin

+0

Можете ли вы мне помочь? String sql = "insert into library.books values ​​(" + bid + "," + bname + "," + publisher + "," + author + "," + Integer.parseInt (цена) + " , "+ rack_no +", "+ date.valueOf (dop) +", "+ имя пользователя; try {int i = st.executeUpdate (sql); if (i == 1) JOptionPane.showMessageDialog (null, "книга Добавлено", "Sucess", JOptionPane.PLAIN_MESSAGE); еще JOptionPane.showMessageDialog (нулевой, "Некоторые возникла проблема при добавлении книги", "ERROR", JOptionPane.ERROR_MESSAGE); } поймать (Exception ех) { ex.printStackTrace(); } – Manish