JSP 多条SQL语句同时执行的方法

con.setAutoCommit(true);//设为true,每次executeUpdate将立刻被执行 
sql = "insert into table1(lable1) values('001')"; 
rs = stmt.executeUpdate(sql); 
sql = "insert into table2(lable2) values('002')"; 
rs = stmt.executeUpdate(sql);

这是一段基本的SQL插入语句,分别将两个值插入到两个表中,上面的程序已经能够完成这一需求,但是实际操作中并不建议这样写,原因如下: 
1、程序顺序执行,假如第一条语句入库了,后面一条发生了不可预知的错误而入库失败, 
这样的情况是不被允许的,如果其中一条出错,就应该全部都不予执行。 
2、这里是连续插入2条数据,感觉连续提交两次很正常,但是假如我们扩大这个问题,连续插入1000 
条数据,每次都自动的COMMIT了,这对服务器性能来说是一种浪费。 
因此我们遇到多条SQL语句需要同时执行,就应该把程序改为: 
con.setAutoCommit(false);//设为false,每次executeUpdate将不会立刻提交,而是等待commit();

con.setAutoCommit(false);
//设为false,每次executeUpdate将不会立刻提交,而是等待commit();
sql = "insert into table1(lable1) values('001')";
rs = stmt.executeUpdate(sql);
sql = "insert into table2(lable2) values('002')";
rs = stmt.executeUpdate(sql);
con.commit();

首先把setAuoCommit()设为false,不自动执行。然后正常入库,当所有需要入库的语句都预执行了,然后在进行 commit();这跟前面的代码有什么不一样的地方呢? 
1、假如两条语句中任意一条出问题,两条语句都不会被执行,但是同样可以用catch来获取出错提示 
2、对于需要同时提交1000条记录,我们可以每100条,进行一次commit();这样只需要执行10次提交运行速度会有明显的提升。

WordPress数据库查询SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC 时发生Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'jingjing.wp_posts.post_date' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by错误,这是由require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), include('/themes/green-hope/single.php'), get_sidebar, locate_template, load_template, require_once('/themes/green-hope/sidebar.php'), dynamic_sidebar, call_user_func_array, WP_Widget->display_callback, WP_Widget_Archives->widget, wp_get_archives查询的。

评论当前被关闭。

Copyright © All Rights Reserved · 菁菁博客 Since 2012 · Proudly powered by WordPress