jdbc PreparedStatement executeBatch方法执行效率低的问题
我知道PreparedStatement可以一次执行多条sql语句。通过addBatch方法添加sql,最后执行。我的代码如下(就是一个循环,每次添加一条sql,最后执行...
我知道PreparedStatement可以一次执行多条sql语句。通过addBatch方法添加sql,最后执行。
我的代码如下(就是一个循环,每次添加一条sql,最后执行。但是不知为什么,很耗时):
public void writeToDB(ArrayList<Item> wordList)
{
int i = 0,
size = 0;
Item item = null;
Connection conn = null;
PreparedStatement pStmt = null;
String sql = "insert into t_item(word,trans,phonetic,difficulty) values(?,?,?,?)";
size = wordList.size();
conn = DB.getConn();
pStmt = DB.getpStmt(conn, sql);
for(i=0;i<size;i++)
{
item = (Item) wordList.get(i);
try {
pStmt.setString(1, item.getWord());
pStmt.setString(2, item.getTrans());
pStmt.setString(3, item.getPhonetic());
pStmt.setInt(4, item.getDifficulty());
pStmt.addBatch();
} catch (SQLException e) {
e.printStackTrace();
continue;
}
}
try {
pStmt.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
}
}
wordList里一共有800多个条目
我用ystem.currentTimeMillis()方法测得 for循环体执行时间大概是25毫秒,但是pStmt.executeBatch()这一条语句要22841毫秒!!!应该一共只有800多个sql语句啊。。。不知道为什么会用这么长时间。。。
个位大侠,有什么解决方案吗?是我的代码有问题,还是现实就是这么残酷?。。。
除了写存储过程,还有其他办法吗?
学习中,多谢! 展开
我的代码如下(就是一个循环,每次添加一条sql,最后执行。但是不知为什么,很耗时):
public void writeToDB(ArrayList<Item> wordList)
{
int i = 0,
size = 0;
Item item = null;
Connection conn = null;
PreparedStatement pStmt = null;
String sql = "insert into t_item(word,trans,phonetic,difficulty) values(?,?,?,?)";
size = wordList.size();
conn = DB.getConn();
pStmt = DB.getpStmt(conn, sql);
for(i=0;i<size;i++)
{
item = (Item) wordList.get(i);
try {
pStmt.setString(1, item.getWord());
pStmt.setString(2, item.getTrans());
pStmt.setString(3, item.getPhonetic());
pStmt.setInt(4, item.getDifficulty());
pStmt.addBatch();
} catch (SQLException e) {
e.printStackTrace();
continue;
}
}
try {
pStmt.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
}
}
wordList里一共有800多个条目
我用ystem.currentTimeMillis()方法测得 for循环体执行时间大概是25毫秒,但是pStmt.executeBatch()这一条语句要22841毫秒!!!应该一共只有800多个sql语句啊。。。不知道为什么会用这么长时间。。。
个位大侠,有什么解决方案吗?是我的代码有问题,还是现实就是这么残酷?。。。
除了写存储过程,还有其他办法吗?
学习中,多谢! 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询