当前位置: 首页 > 知识库问答 >
问题:

您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解第1行中“”附近使用的正确语法

墨雨华
2023-03-14

我试图将以下数据插入数据库。但它给了我上面这个错误。您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解第1行中“”附近使用的正确语法。

我试过几种方法,但都没有修好。

  try{
         Statement stat = Database.getStatement();
         stat.executeUpdate("INSERT  INTO"+" admission"+
             " (a_id,sickness,recPhysicianDetails,
                admittedDate,Patient_ID,Doctor_id,Doctor_id1)"+" 
              VALUES
               ('"+txt1.getText()+"',
                '"+txt7.getText()+"','"+txt8.getText()+"', '"+txt6.getText()+"',
 (  SELECT  ID  FROM  patient  WHERE  Patient_name='"+txt3.getText()+"' ),
 (  SELECT  ID  FROM  employee WHERE  Name='"+txt9.getText()+"' ),
 (  SELECT  ID  FROM  employee WHERE  Name='"+txt10.getText()+"')"  );

        }
        catch(Exception e){
            e.printStackTrace();
        }

共有1个答案

公孙阳文
2023-03-14

在您的解决方案中,引号(')放得不对,加上末尾缺少一个关闭括号。使用PreparedStatement将确保您不需要担心引号,请尝试以下操作:

Connection conn = //get connection
PreparedStatement stat = conn.prepareStatement("INSERT INTO  admission (a_id,sickness,recPhysicianDetails,admittedDate,Patient_ID,Doctor_id,Doctor_id1)"
+" VALUES(?, ?, ?, ?, (SELECT ID FROM patient WHERE Patient_name = ?),(SELECT ID FROM employee WHERE Name = ?),(SELECT ID FROM employee WHERE Name = ?))");
stat.setString(1, txt1.getText());
stat.setString(2, txt7.getText());
stat.setString(3, txt8.getText());
stat.setString(4, txt6.getText());
stat.setString(5, txt3.getText());
stat.setString(6, txt9.getText());
stat.setString(7, txt10.getText());
stat.executeUpdate();
 类似资料: