java - 如何根据列值的类型使 PreparedStatement.setXXX() 动态化

标签 java jdbc

我必须使用包含所有行的数据文件中的值来更新表。现在我正在使用 JDBC 批处理。数据文件包含 100 列和数百万行。

例如数据文件包含 3 列 2 行以使其简单

1,ABC,DEF
2.GHI,JKL

PreparedStatement pstmt = connection.prepareStatement(insert);
                //how to find type
                pstmt.setInt(1, 2);
                pstmt.setString(2, "GHI");
                pstmt.setString(3, "JKL");
                pstmt.addBatch();
                pstmt.executeBatch();

现在我的问题是在运行时基于来自数据文件的数据我如何发现我需要调用 setIntsetString更重要的是我需要调用多少次setXXX对于那个addBatch() .这似乎对于每个表我都需要有专门的preparedStatements。更重要的是,我需要根据数据文件中的列数找出我应该在运行时调用 setObject 多少次?无论如何我可以使这个通用吗?

我是 JDBC 新手,请指导。提前致谢。

最佳答案

您可以使用 setObject(int index, Object obj)。然后 JDBC 确定正确的类型。

关于java - 如何根据列值的类型使 PreparedStatement.setXXX() 动态化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17484673/

相关文章:

scala - Spring boot(使用 Scala)无法实例化 DataSource [未找到支持的 DataSource 类型]

java - 监控 JDBC 调用

java - 无法从 Java Netbeans 连接到 Mariadb

java - 扩展阅读器,如何返回我的 "read"?

java - 通过 JavaFX 将子菜单动态添加到 FXML

java - SharedPreferences 没有更新其值

java - NetBeans平台: Define an action in multiple category

java - Oracle安装产品文件夹和diag文件夹在不同的地方

java - 在 Java 中转义 MySQL 字符串......没有准备好的语句

java - Ruby 时区字符串到 java 时区