【问题标题】:java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (near "Name": syntax error)java.sql.SQLException:[SQLITE_ERROR] SQL 错误或缺少数据库(“名称”附近:语法错误)
【发布时间】:2016-08-14 14:41:56
【问题描述】:

我正在做一个用户应该能够登录的登录应用程序。但我收到此错误:

java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (near "Name": syntax error)

这就是我的代码的样子:

saveTButton.addEventHandler(ActionEvent.ACTION, (e)-> {

        try
        {
            String query = "insert into TeachersInfo (First Name,Last Name,UserName,Password) values (?,?,?,?)";
            PreparedStatement pst = connectionUsers.prepareStatement(query);
            //First question mark = 1, second = 2, etc.
            pst.setString(1,nameSignupTTextField.getText());
            pst.setString(2,lastnameSignupTTextField.getText());
            pst.setString(3,usernameSignupTTextField.getText());
            pst.setString(4,passwordSignupTTextField.getText());


            pst.execute();

            System.out.println("Data saved");

            //after executing the query this lines will close the connection with the database
            pst.close();

        }
        catch(Exception a)
        {
            System.out.println(a);
        }
    });

代码应将用户输入的信息保存在数据库中。我不知道是什么问题,所以我非常感谢您的帮助。提前谢谢你..

【问题讨论】:

    标签: java sqlite javafx


    【解决方案1】:

    由于您的列名包含空格,您应该转义它们:

    String query = "insert into TeachersInfo (\"First Name\",\"Last Name\",UserName,Password) values (?,?,?,?)";
    

    看到这个话题:Read data from sqlite where column name contains spaces in android

    【讨论】:

      【解决方案2】:

      我认为问题在于列名First NameLast Name 中的空格。如果这些确实是列名,我想您必须正确引用它们。但最好不要在列名中使用空格。

      【讨论】:

        【解决方案3】:

        不要在列名中使用空格。

               try
            {
                String query = "insert into TeachersInfo (First_Name,Last_Name,UserName,Password) values (?,?,?,?)";
                PreparedStatement pst = connectionUsers.prepareStatement(query);
                //First question mark = 1, second = 2, etc.
                pst.setString(1,nameSignupTTextField.getText());
                pst.setString(2,lastnameSignupTTextField.getText());
                pst.setString(3,usernameSignupTTextField.getText());
                pst.setString(4,passwordSignupTTextField.getText());
        
        
                pst.execute();
        
                System.out.println("Data saved");
        
                //after executing the query this lines will close the connection with the database
                pst.close();
        
            }
            catch(Exception a)
            {
                System.out.println(a);
            }
        });
        

        【讨论】:

          【解决方案4】:

          我不确定 sql lite 的表列中是否允许使用空符号。但你可以试试这个:

          insert into TeachersInfo ([First Name],[Last Name],UserName,Password) values (?,?,?,?)
          

          否则尝试编辑列名。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-06-01
            • 2017-02-11
            • 2021-07-31
            • 2018-01-19
            • 1970-01-01
            • 2021-04-28
            • 2018-04-10
            • 1970-01-01
            相关资源
            最近更新 更多