软件工程日报十七——结对作业
今日学习总结今天我和我的小cp学习了关于java 数据库遍历以及动态建立联通表的知识。
{ stmt = con.createStatement();// 创建Statement对象,依赖于Connection创建 rs = stmt.executeQuery("select * from salary"); while (rs.next()) {//下一行 int id = rs.getInt("id");//获取id这一列 int e_id = rs.getInt("e_id"); int month = rs.getInt(3);//获取第三列,和上面一样是2种不同的写法 int basic = rs.getInt(4); int more = rs.getInt("more"); System.out.println(id + " " + e_id + " " + month + " " + basic + " " + more); }
通过使用while循环并且创建一个新的变量,另变量等于数据表中的字段数据。
然后进行循环逐个赋值。
然后再数据库类中写一个sql语句“CREAT TABLE ”建立新表并且将删除表中数据功能完善,以便于后期修改添加新站点。
将遍历后的数据再通过“INSERT INTO”语句插入到新的表中,实现联通表的动态创建。
首先我们可以写出如下代码:
for(i=0;i<nodenum-1;i++) { for(j=0;j<nolist.get(i).get_feature_count();j++) { sqlin = "insert into random_data( id,"; for(i=0;i<nodenum-1;i++)sqlin+="ND"+i+","; sqlin+= "ND"+(nodenum-1); sqlin+=") values("; } }
可以得到 “ insert into random_data( id,ND0,ND1,ND2,ND3,ND4,ND5,ND6) values( ”的字符串 ,之后的部分必须动态的重构出来,才能拼接完整,令 over 也是ArrayList类型,
是原数据集ArrayList中数据每隔列数个就存入一次得到的,其输出已经形如:
'2','3','1','0','2','1','4', '4','2','5','6','2','1','2', '3','2','4','0','2','2',再用 T = T .substring(0,T.length()-1) 这个方法去掉最后重复的逗号。
现在,完整的insert语句中values括号内的字符串已经得到,最后过程,有如 下代码:
for(i=0;i<over.size();i++) { String sqldo = sqlin +"'"+(i+1)+"',"+ over.get(i) + ");"; //System.out.println(sqldo); statement.executeUpdate(sqldo); }
输出拼接完成的字符串,可得到若干字符串形如:
insert into random_data( id,ND0,ND1,ND2,ND3,ND4,ND5,ND6) values('3','2','4','0','2','2','0');
至此,由以上种种操作,已经得到了以下字符串,显然它们就是是我们想要的sql执行语句:
create table random_data( id int(32),ND0 int(32),ND1 int(32),ND2 int(32),ND3 int(32),ND4 int(32),ND5 int(32),ND6 int(32) );
insert into random_data( id,ND0,ND1,ND2,ND3,ND4,ND5,ND6) values('3','2','4','1','0','3','2'); select * from random_data where id = "16760"; //具体查询不做详述
由于在for循环中进行,每次拼接完成后随即执行,完成循环的同时也完成了对数据库中数据的插入操作,所以动态建立的表格中便动态插入了数据。