ResultSet转换成String[][] 50分!!!!

liukang520236 2005-12-01 03:43:13
如题@_@
要求:尽可能短的代码!
最好是一行!!

分在另外一个帖子:
http://community.csdn.net/Expert/topic/4431/4431042.xml?temp=.5004694
一天了,没人能够回答。
...全文
353 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
leekooqi 2005-12-02
  • 打赏
  • 举报
回复
关注,,
liukang520236 2005-12-02
  • 打赏
  • 举报
回复
道理是对的,但是。。。。。

现在的问题是如果不允许写呢。。。。。。

我现在想知道的也是java有没有这样一种方法。。。。。

whyxx 2005-12-02
  • 打赏
  • 举报
回复
找JAVA的API,跟自己写个共通的方法当做API有什么不一样,写出来了,以后的项目都可以重用.
liukang520236 2005-12-02
  • 打赏
  • 举报
回复
又上班了,再顶!
digizero 2005-12-02
  • 打赏
  • 举报
回复
这是我数据库操作类中的一小段
digizero 2005-12-02
  • 打赏
  • 举报
回复
public String[][] viewTable(String[] sql,String where,String order,int asc) {
String or="";
open();//打开连接
this.isExist(where); //取得where的记录数
switch(asc){//排序
case 0:or="ASC";break;
case 1:or="DESC";break;
}
String sqll ="select ";

//filter model -->许多方法中都用了这个模型,看看能不能把它抽成独立的方法
for(int i=0;i<sql.length;i++){
if(i!=sql.length-1){
sqll = sqll+sql[i]+",";
}else{
if(where.length()==0&&order.length()==0){//where与order的判定
sqll = sqll+sql[i]+" from "+tableName;
}else if(where.length()==0&&order.length()!=0){
sqll = sqll+sql[i]+" from "+tableName+" order by "+order+" "+ or;
}else if(where.length()!=0&&order.length()==0){
sqll = sqll+sql[i]+" from "+tableName+" where "+where;
}else{
sqll = sqll+sql[i]+" from "+tableName+" where "+where+" order by "+order+" "+ or;
}

}
}
//<--!fm end

String[][] finall=new String[this.rscnts][colcnt];//开一个2维数组,存储指定表的数据此时数组长度为[0,0]

try{
open();
Statement stmt = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(sqll);
colcnt=rs.getMetaData().getColumnCount();//其实用rsname.length就成了,不知道这个对性能有没有影响
finall=new String[this.rscnts][colcnt];//重新指定数组长度,因为是局部变量所以只能这样,否则会出现NPE
rsname= new String[colcnt];//同理, rsname也需要重新指定这个方法里条件的记录数
int keep=0;
while(rs.next()){//获得所有记录,存进数组
for(int j=0;j<colcnt;j++){
finall[keep][j]=rs.getString(j+1);
rsname[j]=rs.getMetaData().getColumnName(j+1);
//System.out.print(rsname[j]+"\t");
}
keep++;
}
stmt.close();
connect.close();

}
catch (SQLException e) {System.out.println(sqll+" @viewTable方法"+e);}
return finall;
}
liukang520236 2005-12-02
  • 打赏
  • 举报
回复
3q
glnpu_dd 2005-12-02
  • 打赏
  • 举报
回复
特意来帮定
学习中
liukang520236 2005-12-02
  • 打赏
  • 举报
回复
楼上误会我的意思了,我说的是尽可能短啊,能一行是最好的。
因为我是刚开始学习JAVA,对API还不是很了解阿。
我觉得像下面这样做得话不太合适
public String[][] selectExec(String sql)
{
try
{
ResultSet rs1 = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs1.getMetaData();
int col = rsmd.getColumnCount();
int row = 0;
while(rs1.next())
{
row++;
}
String[][] result = new String[row][col];
ResultSet rs2 = stmt.executeQuery(sql);
while(rs2.next())
{
int i;
for(i = 0 ; i < row; i++)
{
int j;
for(j = 0; j < col; j++)
{
result[i][j] = rs2.getString(j);
}
}
}
return result;
}
catch(SQLException e)
{
e.printStackTrace();
return null;
}
}
太麻烦了阿~~~你不觉得吗?只是把一个集合(这个集合本身很可能是有序的)里的东西放到一个二位数组里,就写了这么多行代码阿!
maksim_wei 2005-12-02
  • 打赏
  • 举报
回复
允许写一行代码但不允许写10-20行代码,什么道理?
如果lz一定要这个转换代码,我回家了可以发一个上来,太简单了,我是JAVA的设计者,我也不会专门提供这种API的
liukang520236 2005-12-01
  • 打赏
  • 举报
回复
to:xuvvb()
思维很活跃,但是情况不允许。
还是非常感谢!!1
liukang520236 2005-12-01
  • 打赏
  • 举报
回复
下班之前再顶一下
不论最后结果怎么样
明天午时结账
xuvvb 2005-12-01
  • 打赏
  • 举报
回复
写个方法转
liukang520236 2005-12-01
  • 打赏
  • 举报
回复
终于有一个顶的了
自己也顶一下
今天白天是没戏了
坎今天晚上吧。


难道真的就不可以吗?
bjbr 2005-12-01
  • 打赏
  • 举报
回复
up
liukang520236 2005-12-01
  • 打赏
  • 举报
回复
我感觉ResultSet 是个集合,转换成一个数组应该很容易啊
结果看了好几遍JAVA的API也没找到合适的方法。
不行了,看来我小瞧了啊。
liukang520236 2005-12-01
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4431/4431438.xml?temp=.1810419
转一个我的问题发在数据库了
那边没人回答
顺便顶一下这个帖子

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧