0
try {
    String req = "INSERT INTO nouvelle_installation" +
      "values('" + ref + "','" + today + "','" + check + "','" + nbligne +
      "','" + tligne + "','" + categorie + "','" + instal + "','" + cin +
      "','" + user + "','" + prenom+"','" + numC + "','" + num + "','" + voie +
      "','" + tvoie + "','" + imm + "','" + app + "','" + etage +
      "','" + codep + "')"; 

    Statement m = s.getCon().createStatement();  
    m.executeUpdate(req);
} catch (SQLException e1) {
    e1.printStackTrace();
}

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Erreur de syntaxe près de ''aaa','2012-04-10',' ','-----','------- --------','-------', 'Nouvelle Installati' à la ligne 1

4

5 回答 5

2

正如其他人所说,使用准备好的语句而不是连接你的语句。

这将防止SQL injection和您当前的问题:

"INSERT INTO nouvelle_installation" + "values" ...

结果是

"INSERT INTO nouvelle_installationvalues" ...

您的表名和关键字之间缺少空格values

于 2012-04-10T10:27:59.467 回答
2

您需要在 "INSERT INTO nouvelle_installation" + "values(... 或字符串看起来像

"INSERT INTO nouvelle_installationvalues("...

所以它应该看起来像这样

"INSERT INTO nouvelle_installation" + " values(...
于 2012-04-10T10:28:11.510 回答
1

正如已经有人指出的那样,此代码受到 Sql 注入攻击。但是,查询中可见的第一个错误是关键字
之前缺少空格values

于 2012-04-10T10:27:37.910 回答
1

使用准备好的语句而不是连接您的语句。

准备好的语句也比语句快。

您的表名和关键字之间缺少空格values

于 2012-04-10T11:16:39.243 回答
0

后面有一个引号num,前面有一个引号voie,它们之间没有逗号。那是你想要的吗?

... + "','" + num  + "'"   +
      "'"   + voie + "','" + tvoie + ...

这有效地为您提供,'NUM''VOIE','.

values关键字之前也没有空格。

于 2012-04-10T10:28:58.047 回答