Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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 试用资源(PreparedStatements)_Java - Fatal编程技术网

Java 试用资源(PreparedStatements)

Java 试用资源(PreparedStatements),java,Java,所以我想知道我更喜欢哪种方法,我将从文件中读取每一行并将其存储到我的数据库中。我将准备很多语句,因为我将进行lof选择(检查条目是否存在以从表中获取id值),或者在不存在时进行插入。当我插入5个不同的表时,这类sql将执行5次 因此,我不确定是否可以创建大量准备好的语句,因为我将留下大量打开的连接,但是大多数语句将在我读取文件时使用。或者因为我有很多preparedstatements在while循环中创建它们,并将它们放在自己的try资源块中,所以我不会留下太多打开的连接 try {Prepa

所以我想知道我更喜欢哪种方法,我将从文件中读取每一行并将其存储到我的数据库中。我将准备很多语句,因为我将进行lof选择(检查条目是否存在以从表中获取id值),或者在不存在时进行插入。当我插入5个不同的表时,这类sql将执行5次

因此,我不确定是否可以创建大量准备好的语句,因为我将留下大量打开的连接,但是大多数语句将在我读取文件时使用。或者因为我有很多preparedstatements在while循环中创建它们,并将它们放在自己的try资源块中,所以我不会留下太多打开的连接

try {PreparedStatement stmt1 = connection.PrepareStatement(Sql);
     PreparedStatement stmt2 = connection.PrepareStatement(Sql);
     PreparedStatement stmt3 = connection.PrepareStatement(Sql);
     PreparedStatement stmt4 = connection.PrepareStatement(Sql);
     etc . . . )
     while read line from file {
           //etc
     }
}
还是更倾向于:

while read line from file {
     try {PreparedStatement stmt1 = connection.PrepareStatement(Sql);
          PreparedStatement stmt2 = connection.PrepareStatement(Sql))
          // stmt1.setint(1, blah)
          // stmt1.execute()
          //etc
     }

     try {PreparedStatement stmt3 = connection.PrepareStatement(Sql);
          PreparedStatement stmt4 = connection.PrepareStatement(Sql))
          // stmt1.setint(2, blah)
          // stmt1.execute()
          //etc
     }
}

我会使用第一种变体。第二个打开和关闭每行的
PreparedStatement
,这比一直打开要慢,尤其是当您有很多行要处理时。自己编写语句也不是一个便宜的操作。

我会使用第一个变体。第二个打开和关闭每行的
PreparedStatement
,这比一直打开要慢,尤其是当您有很多行要处理时。自己准备声明也不是一个廉价的行动

  • 当您使用相同的连接对象时,
    连接
    在任何方面都没有问题
  • 但是,不建议使用第二种方法,因为您将一次又一次地编译相同的SQL。纯粹是对计算能力的浪费和对垃圾收集不必要的压力
  • 当您使用相同的连接对象时,
    连接
    在任何方面都没有问题
  • 但是,不建议使用第二种方法,因为您将一次又一次地编译相同的SQL。纯粹是对计算能力的浪费和对垃圾收集不必要的压力
    在上述代码中,您只有一个
    连接
    。在上述代码中,您只有一个
    连接