日期:2014-05-20  浏览次数:20939 次

关于ResultSetMetaData 自动获取表列和表值
public String DBMessage(long id){
String dbdriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url="jdbc:sqlserver://localhost:3333;databaseName=aidb";
String us="sa";
String pw="sa";
String sql="select * from ColumnItem where id="+id+"";

Connection conn=null;
Statement stat=null;
ResultSet rs=null;
StringBuffer sb= new StringBuffer();

try {
Class.forName(dbdriver);
conn=DriverManager.getConnection(url, us, pw);
stat=conn.createStatement();
rs=stat.executeQuery(sql);

while(rs.next()){
ResultSetMetaData rsmd = rs.getMetaData();
int counts = rsmd.getColumnCount();
for (int col = 0; col < counts; col++) {
String colname = rsmd.getColumnName(col+1);
// String colclass=(String) rs.getObject(colname);
sb.append(colname);
sb.append(",");
// sb.append(colclass);
sb.append("\r\n");

System.out.println(colname);
}

// str += rs.getInt("colId");
// str += ",";
// str += rs.getInt("sid");
// str += ",";
// str += rs.getInt("id");
// str += ",";
// str += rs.getString("colCode");
// str += ",";
// str += rs.getString("colName");
// str += ",";
// str += rs.getInt("colPid");
// str += ",";
// str += rs.getInt("colLevel");
// str += ",";
// str += rs.getInt("colType");
// str += ",";
// str += rs.getInt("colLenght");
// str += ",";
// str += rs.getString("colDate");
// str += ",";
// str += rs.getInt("com_id");
// str += ",";
// str += rs.getInt("display");
// str += ",";
// str += rs.getString("formula");
// str += ",";
// str += rs.getInt("isText");
// str += "\r\n";
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sb.toString();
}

 for里面应该怎么写才能自动获取到表列和表列的值?现表列已经获取到了,表列的值怎么获取?


------解决方案--------------------
rs.getInt(index);
或者
rs.getInt("colname");
不就行了么。
------解决方案--------------------
Java code

public class Test{
    public String DBMessage(long id){
        String dbdriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
        String url="jdbc:sqlserver://localhost:3333;databaseName=aidb";
        String us="sa";
        String pw="sa";
        String sql="select * from ColumnItem where id="+id+"";

        Connection conn=null;
        Statement stat=null;
        ResultSet rs=null;
        StringBuffer sb= new StringBuffer();

        try {
            Class.forName(dbdriver);
            conn=DriverManager.getConnection(url, us, pw);
            stat=conn.createStatement();
            rs=stat.executeQuery(sql);
    
            while(rs.next()){
                ResultSetMetaData rsmd = rs.getMetaData();
                int counts = rsmd.getColumnCount();
                for (int col = 0; col < counts; col++) {
                    String colname = rsmd.getColumnName(col+1);
                    sb.append(rsmd.getColumnName(col+1)+",");
                    System.out.println(colname);
                }
                sb.setLength(sb.length()-1);
                sb.append("\r\n");
                while(rs.next()){
                     sb.append(rs.getInt("colId")+",");
                     sb.append(rs.getInt("sid")+",");
                     //....自己写
                     sb.setLength(sb.length()-1);
                     sb.append("\r\n");
                }
            }
        } catch (ClassNotFoundException e) {
        e.printStackTrace();
        } catch (SQLException e) {
        e.printStackTrace();
        }
        return sb.toString();
    } 
}
//楼主这问题还在纠结啊?排版很简单啊,难得是取数据