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

you have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' ' in Line 1

我试图将以下数据插入数据库。但它给了我以上 这个错误。 您的 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();
        }

在您的解决方案中,引号 (') 放置不正确,而且末尾缺少右括号。使用 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();

我会建议使用准备好的语句而不是直接从文本框中调用值。

 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();
    }

你这里双引号打错了,请检查一下,应该可以的。