从java问题

时间:2016-04-11 14:40:14

标签: java mysql

我正在尝试使用java将这些数据插入到mysql中,它说sql语法有问题,但我无法弄明白。任何帮助都会很棒。

stmt = conn.createStatement();
         String sql;
         String fname = "Kyle";
         String lname = "Longrich";

         String insert = "INSERT INTO 'hospital', 'test' ('Firstname', 'Lastname') VALUES ('" + fname + "' , '" + lname + "')";

         stmt.executeUpdate(insert);

2 个答案:

答案 0 :(得分:1)

快速浏览一下,我发现了一些错误:

  • 您正在指定两个表
  • 您将标识符(表/列名称)视为字符串

请改为尝试:

String insert = "INSERT INTO hospital.test (Firstname, Lastname) VALUES ('" + fname + "' , '" + lname + "')";

或者如果您需要指定带有反向标记的标识符(实际上这绝不是一个坏主意):

String insert = "INSERT INTO `hospital`.`test` (`Firstname`, `Lastname`) VALUES ('" + fname + "' , '" + lname + "')";

此外,您可能希望查看使用预准备语句的查询参数。在这种特殊情况下,您所拥有的不是SQL注入漏洞,因为您仍在使用硬编码的文字值,但是这种用于构建SQL查询的字符串连接样式可能会导致SQL注入漏洞,当您不再控制正在使用的价值。

答案 1 :(得分:0)

如果要将相同的数据插入两个不同的表,则必须执行两个不同的语句。

INSERT INTO hospital ('Firstname', 'Lastname') VALUES (..)

INSERT INTO test ('Firstname', 'Lastname') VALUES (..)

您无法将两个语句合并在一起。除此之外,SQL看起来有效。