java - 将参数动态设置为 JDBC 中的准备语句

标签 java jdbc

我有一个适用于所有 DAO 的公共(public)类,我们将在其中读取查询并执行它们,如下所示。我将从 DAO 向此类发送参数。

Connection connection = Queries.getConnection();
String query = Queries.getQuery(queryName);//Queries i will get from xml
PreparedStatement preparedStatement =  connection.prepareStatement(query);

在 JDBC 中为准备好的语句动态设置参数的最佳方法是什么。我相信,我们在 JDBC 中没有命名参数概念,就像在 spring JDBC 中那样。我们项目中只是简单的JDBC。

最佳答案

这样写:

public static int mapParams(PreparedStatement ps, Object... args) throws SQLException {
    int i = 1;
    for (Object arg : args) {         
         if (arg instanceof Date) {
        ps.setTimestamp(i++, new Timestamp(((Date) arg).getTime()));
    } else if (arg instanceof Integer) {
        ps.setInt(i++, (Integer) arg);
    } else if (arg instanceof Long) {
        ps.setLong(i++, (Long) arg);
    } else if (arg instanceof Double) {
        ps.setDouble(i++, (Double) arg);
    } else if (arg instanceof Float) {
        ps.setFloat(i++, (Float) arg);
    } else {
        ps.setString(i++, (String) arg);
    }
   }
  }
}

在查询中只需使用“?”需要设置参数的地方。

我知道这是老派代码,但只是举一些简单的例子...

关于java - 将参数动态设置为 JDBC 中的准备语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11777103/

相关文章:

java - 表未删除

java - DeadLock 在批量 DELETE 预准备语句 MYSQL 中发现错误

java - 如何在没有主键的情况下为表或 View 做 hibernate 映射

java - 使用 JAXB 的嵌套元素,其中元素同时包含属性和元素值

java - Java中更新包含hashmap的hashmap的某个值

java - 在 glassfish/soap java webservices 中禁用传输编码分块

java - JDBC Pool 已挂起,无法为应用程序分配资源

java - 通过矩阵变换在 Canvas 上绘制位图是否会影响位图?

java - 可变日期类修复

java - log4j JDBCAppender java.lang.ClassCastException