java - 使用 JDBC 的参数化查询

标签 java sql sql-server jdbc prepared-statement

是否可以创建一个标准方法来使用 JDBC 执行从 Java 到 SQL Server 的参数化查询?

这是我创建数据库连接池的方法:

    static ConnectionPool pool;
    public static void crearPool(){
        try {
            Class c = Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Driver driver = (Driver) c.newInstance();
            DriverManager.registerDriver(driver);
            String url = "jdbc:sqlserver://localhost:1433;database=STAZIONE;";
            pool = new ConnectionPool("local",5, 20, 40, 180, url, "b_lightyear", "BeyondInfinity");
        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException ex) {/*Error Message*/}
    }

我认为每个DML 查询的标准方法如下:

    public static int QueryDML(String consulta,Object []data){
        int result = 0;
        PreparedStatement prpdStm = null;
        try{
            Connection cnx = pool.getConnection(clsConexion.espera);
            if(conexion!=null){
                prpdStm = conexion.prepareStatement(consulta,,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                for(int position =1; position<data.length;position++){
                    prpdStm.setObject(position, data[position-1]);
                }result = prpdStm.executeUpdate();
            } else{/*Message*/}
        } catch (SQLException ex) {/*Error Message*/}
        return result;
    }

我想知道的是 prpdStm.setObject(position, data[position-1]); 是否适用于任何类型的数据 ->(字符串整数 double 等...)?

最佳答案

What i want to know is if prpdStm.setObject(position, data[position-1]); will function for any type of data ->(String, Integer, Double, etc...)?

简短回答:是的。

根据 PreparedStatement.setObject() JavaDoc 的答案稍长一些-

The JDBC specification specifies a standard mapping from Java Object types to SQL types. The given argument will be converted to the corresponding SQL type before being sent to the database.

关于java - 使用 JDBC 的参数化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24878693/

相关文章:

SQL - 按给定列中值的变化进行分组

java - 如何几乎同时在两台设备上执行代码?

java - 在 Spring 中从 Thread 类中的数据库获取数据的最佳方法

java - SSL 握手异常 : Received fatal alert: handshake_failure after Java 6 -> 8 upgrade

java - 如何在具有不同行的多对一关系字典表中?

sql - 我应该如何在 SQL Server 2005 中使用 BIT

java - 等待系统时间继续申请

sql - DBMS_METADATA.GET_DDL 的任何替代方式

sql - 简单的 SQL 命令没有正确结束

python - 我应该总是使用 'implicit_returning' :False in SQLAlchemy?