如何解决 JAVA SQL 语法错误:错误代码 1064
Posted
技术标签:
【中文标题】如何解决 JAVA SQL 语法错误:错误代码 1064【英文标题】:How can i solve JAVA SQL Syntax Error : Error Code 1064 【发布时间】:2021-05-12 16:44:30 【问题描述】:我在创建prepareStatement 时有这个SQL 语句,我将SQL 语句发送给它。在此之后,我尝试使用 setString 传递参数,但出现此错误:
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax;
check the manual that corresponds to your mysql server version for the right syntax to use near '?' at line 8
SQL语句如下:
public static final String SQL_SELECT_RESERVA_BY_CLIENTEDNI = "SELECT `reserva`.`NUMERO_RESERVA`,\r\n"
+ "`reserva`.`CLIENTE_DNI`,\r\n"
+ "`reserva`.`PENSIONES_TIPO_PENSION`,\r\n"
+ "`reserva`.`FECHA_ENTRADA`,\r\n"
+ "`reserva`.`FECHA_SALIDA`,\r\n"
+ "`reserva`.`NUMERO_HUESPEDES`\r\n"
+ "FROM `hotel`.`reserva`\r\n"
+ "WHERE CLIENTE_DNI=?;";
如果我们按照错误提示更改问号,用“?”包围它,则会发生另一个错误:
Parameter index out of range (1 > number of parameters, which is 0).
我们认为是在使用 ps.setString 添加参数时发生错误
objDatos.Connect();
tabla = objDatos.Consulta(SQL_SELECT_RESERVA_BY_CLIENTEDNI, parametros);
objDatos.Disconnect();
public ArrayList<itfData> Consulta(String sql, ArrayList<Object>parametros)
ArrayList<itfData>resultado;
resultado=new ArrayList <itfData>();
try
ps = conn.prepareStatement(sql);
if(parametros !=null)
this.CompletarParametrosQuery(parametros);
private void CompletarParametrosQuery(ArrayList<Object> parametros)
int cont = 1;
for (Object param : parametros)
try
if (param instanceof String)
ps.setString(cont, (String) param);
cont++;
continue;
【问题讨论】:
尝试去掉分号,不需要语句分隔符 我已经试过了,我得到了同样的第一个错误,告诉我输入''。 你可以试试JPA或者Criteria。 已解决:***.com/questions/4131092/… 【参考方案1】:请注意错误消息“靠近'?'在第 8 行"
首先,您必须确保“ps.setString(cont, (String) param);”被实际执行。 然后,我认为错误来自您尝试执行查询的方式。您似乎没有使用 PreparedStatement。应该是这样的:
ps.executeQuery();
【讨论】:
以上是关于如何解决 JAVA SQL 语法错误:错误代码 1064的主要内容,如果未能解决你的问题,请参考以下文章