Java 试用资源(PreparedStatements)
所以我想知道我更喜欢哪种方法,我将从文件中读取每一行并将其存储到我的数据库中。我将准备很多语句,因为我将进行lof选择(检查条目是否存在以从表中获取id值),或者在不存在时进行插入。当我插入5个不同的表时,这类sql将执行5次 因此,我不确定是否可以创建大量准备好的语句,因为我将留下大量打开的连接,但是大多数语句将在我读取文件时使用。或者因为我有很多preparedstatements在while循环中创建它们,并将它们放在自己的try资源块中,所以我不会留下太多打开的连接Java 试用资源(PreparedStatements),java,Java,所以我想知道我更喜欢哪种方法,我将从文件中读取每一行并将其存储到我的数据库中。我将准备很多语句,因为我将进行lof选择(检查条目是否存在以从表中获取id值),或者在不存在时进行插入。当我插入5个不同的表时,这类sql将执行5次 因此,我不确定是否可以创建大量准备好的语句,因为我将留下大量打开的连接,但是大多数语句将在我读取文件时使用。或者因为我有很多preparedstatements在while循环中创建它们,并将它们放在自己的try资源块中,所以我不会留下太多打开的连接 try {Prepa
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
,这比一直打开要慢,尤其是当您有很多行要处理时。自己准备声明也不是一个廉价的行动
连接
在任何方面都没有问题连接
在任何方面都没有问题在上述代码中,您只有一个
连接
。在上述代码中,您只有一个连接
。