【发布时间】:2017-04-29 12:52:20
【问题描述】:
我尝试将以下数据插入数据库。但它给了我以上 这个错误。 您的 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();
}
【问题讨论】:
-
你在
txt6.getText()之前有''...这是连续两个'字符。删除其中一个。 -
为了避免这个问题,你必须使用 PrepapredStatement
-
查询字符串中缺少一个括号试试这个。 stat.executeUpdate("INSERT INTO"+"入院"+" (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()+"'))");跨度>
-
不要将值连接到查询字符串中,这会使您容易受到 SQL 注入的攻击,您应该使用带参数的预准备语句。