异常java.sql.SQLException:无法在位置(...)设置参数。 whit mariadb

问题描述 投票:-2回答:2

下面的代码通过使用mariadb管理器向我抛出一个异常,这个没有传递mysql,允许我执行executeUpdate,但不执行executeQuery。我寻求解决方案的事实并没有一个是我的理由,因为我没有犯下任何错误。已经重新安装java和mariadb,仍然无法正常工作。谢谢!

这是我的代码:

package Conexion;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;


public class mainPruebas {

    public static void main(String[] args) 
    {
        String url = "jdbc:mariadb://127.0.0.1:3306/buscadorpersonas?autoReconnect=true&useSSL=false";
        String user = "root";
        String pass = "2222";
        Connection conexion=null;
        PreparedStatement ps=null;
        try {

            conexion = DriverManager.getConnection(url,user,pass);

            ps = conexion.prepareStatement("SELECT CODIGOCLIENTE, EMPRESA, POBLACION FROM tclientes WHERE POBLACION='?';");
            ps.setString(1, "MADRID");
            ResultSet rs = ps.executeQuery();

            while(rs.next()) {
                System.out.println(rs.getString("CODIGOCLIENTE")+" "+rs.getString("EMPRESA")+" "+rs.getString("POBLACION"));
            }

            conexion.close();

        }catch(Exception e) {

            e.printStackTrace();
        }
    }
}

例外:

java.sql.SQLException:无法在位置1设置参数(值为'MADRID')查询 - conn:8(M) - “SELECT CODIGOCLIENTE,EMPRESA,POBLACION FROM tclientes WHERE POBLACION ='?';” org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getSqlException(ExceptionMapper.java:192)org.mariadb.jdbc.MariaDbPreparedStatementClient.setParameter(MariaDbPreparedStatementClient.java:435)at org.mariadb.jdbc.BasePrepareStatement.setString (BasePrepareStatement.java:1379)在Conexion.mainPruebas.main(mainPruebas.java:22)

java mysql mariadb
2个回答
2
投票

删除PreparedStatement中问号周围的引号

ps = conexion.prepareStatement("SELECT CODIGOCLIENTE, EMPRESA, POBLACION FROM tclientes WHERE POBLACION=?;");

0
投票

更换 ps = conexion.prepareStatement("SELECT CODIGOCLIENTE, EMPRESA, POBLACION FROM tclientes WHERE POBLACION='?';") WITH ps = conexion.prepareStatement("SELECT CODIGOCLIENTE, EMPRESA, POBLACION FROM tclientes WHERE POBLACION=?;")

注意:我已经移除了''周围的?

© www.soinside.com 2019 - 2024. All rights reserved.