如题@_@
要求:尽可能短的代码!
最好是一行!!分在另外一个帖子:
http://community.csdn.net/Expert/topic/4431/4431042.xml?temp=.5004694
一天了,没人能够回答。
要求:尽可能短的代码!
最好是一行!!分在另外一个帖子:
http://community.csdn.net/Expert/topic/4431/4431042.xml?temp=.5004694
一天了,没人能够回答。
转一个我的问题发在数据库了
那边没人回答
顺便顶一下这个帖子
结果看了好几遍JAVA的API也没找到合适的方法。
不行了,看来我小瞧了啊。
思维很活跃,但是情况不允许。
还是非常感谢!!1
如果lz一定要这个转换代码,我回家了可以发一个上来,太简单了,我是JAVA的设计者,我也不会专门提供这种API的
因为我是刚开始学习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;
}
}
太麻烦了阿~~~你不觉得吗?只是把一个集合(这个集合本身很可能是有序的)里的东西放到一个二位数组里,就写了这么多行代码阿!
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;
}