【问题标题】:SQL query : Wrong syntaxSQL 查询:语法错误
【发布时间】:2014-10-15 15:00:59
【问题描述】:

我正在尝试编写查询,但出现语法错误。我知道这个错误在查询的语法中。这是查询

ResultSet set=statement.executeQuery("Select * from Ombrellone where PosizioneX='"+c.getX()+"',PosizioneY='"+c.getY()+"'" );

谁能帮帮我?

【问题讨论】:

  • 无关:您对 SQL 注入持开放态度。你应该使用PreparedStatement
  • @a_horse_with_no_name 虽然不相关,但比现在的问题更大:)

标签: java mysql sql database jdbc


【解决方案1】:

如果要在 select 上有多个条件,则必须使用 AND,而不是逗号。

ResultSet set=statement.executeQuery("Select * from Ombrellone where PosizioneX='"+c.getX()+"' and PosizioneY='"+c.getY()+"'" );

旁注:Avoid using String concatination with query parameters. They causes SQL injections and try using PreparedStatement.

【讨论】:

  • @doflamingo 很高兴为您提供帮助。如果您觉得有帮助,请将其标记为答案。
【解决方案2】:

虽然您的问题基本上是因为您在 SQL 查询中使用了逗号,这是错误的,但您可以在使用 WHERE 子句时使用 AND 或 OR 来满足条件,但也 我建议你使用 PreparedStatement 而不是 Statement。

String query = "Select * from Ombrellone where PosizioneX = ? and PosizioneY = ?"
PreparedStatement statement = conn.prepareStatement(query);
statement.setString(1,c.getX());
statement.setString(2,c.getY());
ResultSet resultSet = statement.executeQuery();

Refer difference between statement and preparedstatement

【讨论】:

  • PreparedStatement 绝对是这里更好的选择,但是,严格来说,是次要的问题。问题是使用逗号而不是and
  • @Brandon 同意,但解决方案应该永远是完美的
猜你喜欢
  • 2019-05-10
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-06
  • 2014-09-29
  • 1970-01-01
相关资源
最近更新 更多