【问题标题】:How to avoid MySQLSyntaxErrorException如何避免 MySQLSyntaxErrorException
【发布时间】:2012-05-26 04:35:33
【问题描述】:

我正在使用 Java 将一些数据插入 mysql 。但是在数据中加入撇号(标点符号)(接近每周跟踪器表明工作增长)它给了我 MySQLSyntaxErrorException。请给我适当的解决方案来处理它

我有 isa 的代码

void insert(String a1,String a2, String a3) {
  String nt = a2;
  String pt = a3;
  String tb = a1; 
  query = "insert into "+tb+"(head,des) values('"+nt+"','"+pt+"')"; 
  try {
    stmt.executeUpdate(query);
    System.out.println("inserted"); //con.close();
  } catch (SQLException ex) {
    // Logger.getLogger(conec.class.getName()).log(Level.SEVERE, null, ex);
    ex.printStackTrace();
  }
}

【问题讨论】:

  • 'void insert(String a1,String a2, String a3) { String nt = a2;字符串 pt = a3;字符串 tb = a1; query = "插入"+tb+"(head,des) 值('"+nt+"','"+pt+"')";尝试 { stmt.executeUpdate(query); System.out.println("插入"); //con.close(); } catch (SQLException ex) { // Logger.getLogger(conec.class.getName()).log(Level.SEVERE, null, ex); ex.printStackTrace(); } }'
  • @TukirNaim :编辑您的问题并在此处添加此查询..

标签: java mysql exception


【解决方案1】:

Use query parameters,不是字符串连接。这将允许数据库驱动程序格式化您发送到数据库服务器的值,而不是自己重新发明这个轮子。

String sql = "insert into ... values (?, ?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, nt);
stmt.setString(2, pt);
stmt.executeUpdate();

【讨论】:

    【解决方案2】:
    query = "insert into "+tb+"(head,des) values('"+nt+"','"+pt+"')";
    

    应该是

    query = "insert into "+tb+" (head, des) values ('"+nt+"','"+pt+"')";
    

    请进行这些更改,如果仍有问题,请告诉我......

    【讨论】:

    • 没有得到相同的错误。MySQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 1 行使用“当他们听到不同的签名口哨时心率发生变化。”)附近
    • 您的代码中是否有声明“当他们听到不同的签名哨声时心率会发生变化”?我认为其他地方有问题......
    • 带有撇号的查询无法处理
    • 啊,你能用撇号把那个字符串贴在这里吗??
    • (测试海豚听到不同标志性口哨时的心率是否会发生变化。)这是我必须插入的数据类型
    猜你喜欢
    • 2010-12-07
    • 2013-02-12
    • 1970-01-01
    • 2011-05-15
    • 2014-05-30
    • 2022-01-26
    • 2014-10-15
    • 2013-07-16
    • 2013-03-03
    相关资源
    最近更新 更多