【问题标题】:unable to write data in sql database by java but reading successfully无法通过java在sql数据库中写入数据但读取成功
【发布时间】:2017-08-04 06:05:57
【问题描述】:

我正在使用以下代码:

JButton btnEdit = new JButton("Edit");
btnEdit.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {

        try{
        String query = "Insert Into check(Name, Password)Values(?,?)";
        PreparedStatement pst = con.prepareStatement(query);
        pst.setString(1, textField.getText());
        pst.setString(2, textField_1.getText());
/*      pst.setString(3, textField_2.getText());
        pst.setString(4, textField_4.getText());
        pst.setString(5, textField_5.getText());
        */

        pst.execute();
        JOptionPane.showMessageDialog(null, "Data Saved");
        pst.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
});

我正在从 SQL 数据库中检索数据,但每当我尝试插入数据时,都会在运行时出错:

java.sql.SQLException:[Microsoft][ODBC SQL Server 驱动程序][SQL 服务器]关键字“检查”附近的语法不正确。在 sun.jdbc.odbc.JdbcOdbc.createSQLException(未知来源)在 sun.jdbc.odbc.JdbcOdbc.standardError(未知来源)在 sun.jdbc.odbc.JdbcOdbc.SQLExecute(未知来源)在 sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(未知来源)在 AdminPanel$2.actionPerformed(AdminPanel.java:184) 在 javax.swing.AbstractButton.fireActionPerformed(未知来源)在 javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(未知来源)在 javax.swing.DefaultButtonModel.setPressed(未知来源)在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知 源)在 java.awt.Component.processMouseEvent(未知源)在 javax.swing.JComponent.processMouseEvent(未知来源)在 java.awt.Component.processEvent(未知来源)在 java.awt.Container.processEvent(未知来源)在 java.awt.Component.dispatchEventImpl(未知来源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.LightweightDispatcher.retargetMouseEvent(未知来源)在 java.awt.LightweightDispatcher.processMouseEvent(未知来源)在 java.awt.LightweightDispatcher.dispatchEvent(未知来源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Window.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.EventQueue.dispatchEventImpl(未知来源)在 java.awt.EventQueue.access$300(未知来源)在 java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 来源)在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue$4.run(未知源)在 java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue.dispatchEvent(未知源)在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知 来源)在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(Unknown Source) 在 java.awt.EventDispatchThread.run(来源不明)

【问题讨论】:

  • 尝试在values前加一个空格
  • 尝试在sql语句末尾加分号。字符串查询=“插入检查(名称,密码)值(?,?);”;
  • 仍然得到相同的错误日志。尝试了你的两个建议兄弟
  • 'check'可以是sqls中不能使用的词,可以是保留词吗?而不是“检查”尝试“abc”,看看你是否得到同样的错误......
  • 看来 deepakl 是对的。它是一个用于放置约束的 sql 关键字。

标签: java jdbc java-8 jdbc-odbc mssql-jdbc


【解决方案1】:

'check' 是保留关键字,因此代码失败,尝试使用不是关键字的名称应该可以解决问题。

【讨论】:

  • 使用INSERT INTO [check] ( ... 也可以解决问题,而无需更改表名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
  • 2020-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多