文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>数据库批处理与存储过程(jdbc+sql2005)

数据库批处理与存储过程(jdbc+sql2005)

时间:2010-08-31  来源:summerdir

一、数据库设计代码

代码
--建一个测试表
CREATE TABLE summer(
id
int primary key ,
name
varchar(20) not null ,
sex
varchar(20) not null
)

--存储过程
CREATE PROCEDURE p_test
@id int,
@name varchar(20),
@sex varchar(20),
@out_message nvarchar(2) output
AS
BEGIN TRAN
SET @out_message=''
BEGIN TRY
insert into summer (id,name,sex) values(@id,@name,@sex)
IF @@rowcount=0
SET @out_message='0'
END TRY
BEGIN CATCH
SET @out_message='0'
END CATCH
IF @@ERROR<>0
ROLLBACK TRAN A
ELSE
IF @out_message=''
SET @out_message='1'
COMMIT TRAN A
GO

 

二、程序端代码

代码
 1     //声明
2 Collection c=new Vector();
3 Object[] str;
4 int count;
5 String sex=null;
6
7 //button(增加)的功能
8 if("".equals(text1.getText()) || text1.getText()==null){
9 JOptionPane.showMessageDialog(null,"输入不能为空!");
10 }else{
11 c.add(text1.getText());
12 text1.setText("");
13 str=c.toArray();
14 }
15
16 //button(提交)的功能
17 System.out.println(new Date()); //数据插入前系统的时间
18 String sql="{call p_test(?,?,?,?)}";
19 String sql1="select count(*) from summer";
20 try {
21 rs=stmt.executeQuery(sql1);
22 if(rs.next()){
23 count=rs.getInt(1);
24 }
25 PreparedStatement cs=conn.prepareStatement(sql);
26 if(c.size()==0){
27 JOptionPane.showMessageDialog(null,"没有数据录入!");
28 }else{
29 for(Object s:str){
30 cs.setInt(1,++count);
31 cs.setString(2,s.toString());
32 if(count%2==0){
33 sex="male";
34 }else{
35 sex="female";
36 }
37 cs.setString(3,sex);
38 cs.setString(4,"");
39 cs.addBatch();
40 }
41 cs.executeBatch();
42 conn.commit();
43 }
44 System.out.println(new Date()); //数据插入提交系统的时间
45 } catch (SQLException e) {
46 e.printStackTrace();
47 }

 

三、程序运行截图

 

四、程序执行后截图

 

五、个人收获和问题

  收获:批处理+存储过程实现起来感觉还是比较方便,感觉sql语句不用写那么多吧,也可以防止当系统中途崩溃而造成数据库出现数据不一致等问题吧。

  问题:其实我还不太懂存储过程的作用,我感觉他在效率方面也并不怎么高,也许是没有经过大量的数据测试,所以感觉不到吧。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载