数据库表instrument中有四个字段
1.instrID(描述仪器的ID),itemID(测向分量的ID),itemName(测向分量的名称),obsTime(观测时间)
其中obsTime是类似"20080901193001,20080901193201,20080901193201"结构的值
2.现在我想做的事是从数据库中读取一条记录,将每条记录的第四项用split(",")拆分
由于每个itemID对应的obsTime长度不一样所以我选择了用ArrayList<ArrayList<String>>,
请问这个实现语句应该怎么写呢?
1.instrID(描述仪器的ID),itemID(测向分量的ID),itemName(测向分量的名称),obsTime(观测时间)
其中obsTime是类似"20080901193001,20080901193201,20080901193201"结构的值
2.现在我想做的事是从数据库中读取一条记录,将每条记录的第四项用split(",")拆分
由于每个itemID对应的obsTime长度不一样所以我选择了用ArrayList<ArrayList<String>>,
请问这个实现语句应该怎么写呢?
解决方案 »
- jpcap.dll必须放jre的bin目录下?
- linux(starx)系统安装jdk1.5出错,求大神解决
- 菜鸟问题用JPanel画图
- 怎样查看当前线程是否处于活动状态呢?难道使用this.isAlive()?
- 一个小编程题,感觉挺难,高手进来指点一下
- showConfirmDialog能否改变默认值?
- 请问怎么用JAVA调用word程序
- 在画布最大化等变化的时候,我用Graphics画的图都没有了
- 怎么安装Borland.JBuilder.2005.Enterprise-SHOCKiSO??
- \r和\n有区别吗?
- 给定的几个数字,怎么样排序找到最大的一个呢?
- 怎么实现将缓冲区的数据读入硬盘
读取后放在ArrayList<ArrayList<String>>里,然后在Struts的前台页面显示
Context ctx=new InitialContext();
Connection conn=null;
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
conn=ds.getConnection();
String sqlStr1 = "select count(itemID) as rscount from LoopQueryMeasureData where instrID="+instrID;
String sqlStr2 = "select items.itemID,items.itemName,LoopQueryMeasureData.obsTime,LoopQueryMeasureData.instrID from " +"LoopQueryMeasureData,items where LoopQueryMeasureData.itemID=items.itemID and " +"LoopQueryMeasureData.instrID="+instrID;
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs1 = stmt.executeQuery(sqlStr1);
ResultSet rs2 = stmt.executeQuery(sqlStr2);
ArrayList<ArrayList<String>> listReturn = new ArrayList<ArrayList<String>>();
if(rs1.next()){
int count = rs1.getInt(1);
for(int i=0;i<count;i++){
listReturn.add(new ArrayList<String>());
}
while(rs2.next()){
for(int i=0;i<listReturn.size();i++){
(listReturn.get(i)).add(rs2.getString("LoopQueryMeasureData.instrID"));
(listReturn.get(i)).add(rs2.getString("items.itemID"));
(listReturn.get(i)).add(rs2.getString("items.itemName"));
String[] lackTime = rs2.getString("LoopQueryMeasureData.obsTime").split(",");
for(int j=0;j<lackTime.length;j++){
(listReturn.get(i)).add(lackTime[j]);
}
}
}
request.setAttribute("listReturn", listReturn);
}
{
instrID
//其它的属性
//最后一个你可以是一个数组,也可以用一个ArrayList.//对应的get/set方法
}ArrayList list = new ArrayList();
while(rs2.next()){
T t = new T();
t.setInstrID((rs2.getString("LoopQueryMeasureData.instrID"))
t.setxxx(rs2.getString(xxx))
t.setyyy(rs2.getString(yyy).split(","));
list.add(t);
}request.setAttribute("list",list);
if(rs1.next()){
while(rs2.next()){ ArrayList temp =new ArrayList();
temp.add(rs2.getString("LoopQueryMeasureData.instrID"));
temp.add(rs2.getString("items.itemID"));
temp.add(rs2.getString("items.itemName"));
String[] lackTime = rs2.getString("LoopQueryMeasureData.obsTime").split(",");
for(int j=0;j<lackTime.length;j++){
temp.add(lackTime[j]);
}
}
listReturn.add(temp);
}
request.setAttribute("listReturn", listReturn);
}你这样做呢,在显示这个listReturn的时候,每一个元素是ArrayList,然后这个ArrayList的前三个元素是那三个属性也就是get(0),get(1),get(2),其它的就是你的时间分隔出来的了.
我昨晚稍微改了一下,不过不是最优算法:Context ctx=new InitialContext();
Connection conn=null;
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
conn=ds.getConnection();String sqlStr1 = "select count(itemID) as rscount from LoopQueryMeasureData where instrID="+instrID;
String sqlStr2 = "select items.itemID,items.itemName,LoopQueryMeasureData.obsTime,LoopQueryMeasureData.instrID from " +
"LoopQueryMeasureData,items where LoopQueryMeasureData.itemID=items.itemID and " +
"LoopQueryMeasureData.instrID="+instrID;
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs1 = stmt.executeQuery(sqlStr1);
ArrayList<ArrayList<String>> listReturn = new ArrayList<ArrayList<String>>();
if(rs1.next()){
int count = rs1.getInt(1);
for(int i=0;i<count;i++){
listReturn.add(new ArrayList<String>());
}
ResultSet rs2 = stmt.executeQuery(sqlStr2);
int i =0 ;
while(rs2.next()){
(listReturn.get(i)).add(rs2.getString("LoopQueryMeasureData.instrID"));
(listReturn.get(i)).add(rs2.getString("items.itemID"));
(listReturn.get(i)).add(rs2.getString("items.itemName"));
String[] lackTime = rs2.getString("LoopQueryMeasureData.obsTime").split(",");
for(int j=0;j<lackTime.length;j++){
System.out.println(lackTime[j]);
(listReturn.get(i)).add(lackTime[j]);
}
i++;
}
request.setAttribute("listReturn", listReturn);
rs2.close();
}