Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果另一次插入成功,如何在数据库中进行大容量插入?_Java_Oracle_Jdbc_Odbc - Fatal编程技术网

Java 如果另一次插入成功,如何在数据库中进行大容量插入?

Java 如果另一次插入成功,如何在数据库中进行大容量插入?,java,oracle,jdbc,odbc,Java,Oracle,Jdbc,Odbc,我必须在数据库的两个表(比如表1和表2)中插入~40K条记录 表2中的插入是有条件的。当且仅当记录成功插入表1时,才应在表2中插入记录 这可以成批完成吗?我正在使用JDBC驱动程序。我正在使用Oracle 10g XE 最好的方法是什么?我应该使用多线程进行数据库池吗?executeUpdate方法将返回受语句影响的行数。可以将此作为比较来检查它是否已成功执行。我的建议是尽可能靠近数据执行操作的业务逻辑。这将意味着有一个PL/SQL过程作为您希望执行的功能的API 这将使您的代码变得微不足道;对

我必须在数据库的两个表(比如表1和表2)中插入
~40K条记录

表2中的插入是有条件的。当且仅当记录成功插入表1时,才应在表2中插入记录

这可以成批完成吗?我正在使用JDBC驱动程序。我正在使用Oracle 10g XE


最好的方法是什么?我应该使用多线程进行数据库池吗?

executeUpdate方法将返回受语句影响的行数。可以将此作为比较来检查它是否已成功执行。

我的建议是尽可能靠近数据执行操作的业务逻辑。这将意味着有一个PL/SQL过程作为您希望执行的功能的API

这将使您的代码变得微不足道;对数据库过程的一个简单调用,它将返回一些结果


应用于数据的所有逻辑都是由几乎专门为操作数据而设计的代码执行的。与Java不同,Java可以操作数据,但不如PL/SQL。顺便说一句,它也可能快得多。(Youtube上的这个演示非常有用,如果有点长的话-

我建议您使用Oracle JDBC驱动程序并使用事务()将两个记录插入单独的表中应该被视为一个事务。如果any insert失败,只需回滚整个事务。(假设您总是必须同时拥有两条记录,并且还必须避免插入第二条记录失败。)一种方法是创建sql过程并从java执行它……为什么您要使用JDBC-ODBC桥,而Oracle JDBC驱动程序中有更好的驱动程序?@MarkrotVeel,我使用的是JDBC驱动程序。这是我的一个错误。感谢您的强调。当您说“最佳方法”时,请定义“最佳”: