今日学习总结
今天我和我的小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循环中进行,每次拼接完成后随即执行,完成循环的同时也完成了对数据库中数据的插入操作,所以动态建立的表格中便动态插入了数据。

浙公网安备 33010602011771号