本次实验的目的在于实现mysql中自动插入学生成绩信息,即给每个学生自动插入1~6号课程的成绩,
属性如下:
学生学号(i):1~23
课程号(j):1~6
成绩:用rand()函数来实现自动填成绩
此功能在java中用两个for循环嵌套即可,代码如下:
for(int i=0;i<22;i++){
for(int j=0;j<6;j++){
//此处为jdbc操作插入的语句
//也可以用hibernate插入
}
}
用存储过程会有一点for循环的影子,但是要注意对于课程号(j)的循环结束后要使j重新初始化到1,这样才能继续下次对j的循环,否则下次直接跳过对j的while循环,mysql中sql代码如下:
delimiter $ #以delimiter来标记用$表示存储过程结束
create procedure pro()
begin
declare i int; #定义i变量
declare j int; #定义j变量
set i=1;
set j=1;
while(i<=23) do #对学号的循环
while(j<=6) do #对课程号的循环
insert into scores(sid,cid,score) values(i,j,rand()*100);
set j=j+1;
end while;
set i=i+1;
set j=1; #重新给j赋值为1,让它下次继续从j=1开始进行立面的while循环
#如果不给重新赋值为1,则对j的while循环只能进行一次
end while;
end
$ #存储过程结束
call pro(); #调用pro()存储方法
这样插入的结果如下:
id i j score---------------------
1 1 1 71
2 1 272
3 1 348
4 1 424
5 1 577
6 1 614
7 2 137
8 2 242
9 2 31
10 2 476
11 2 580
12 2 670
13 3 110
14 3 239
15 3 366
16 3 413
17 3 569
18 3 6