ResultSetMetaData rsmd = rst.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
while(rst.next()){
for(int i=0;i<numberOfColumns;){
print(rsmd.getColumnName(i));
}
}
int numberOfColumns = rsmd.getColumnCount();
while(rst.next()){
for(int i=0;i<numberOfColumns;){
print(rsmd.getColumnName(i));
}
}
请继续讨论
ResultSetMetaData rsmd = rst.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
for(int i=0;i<numberOfColumns;i++){
System.out.println(rsmd.getColumnName(i));
}rst.next()不执行是因为你的表里面没有记录,列名不需要循环取。
这样做得到了返回结果的元信息。显示如下,显然是不对的
TABLE_CAT
TABLE_SCHEM
TABLE_NAME
COLUMN_NAME
DATA_TYPE
TYPE_NAME
COLUMN_SIZE
BUFFER_LENGTH
DECIMAL_DIGIT
NUM_PREC_RADI
NULLABLE
REMARKS
COLUMN_DEF
SQL_DATA_TYPE
SQL_DATETIME_
CHAR_OCTET_LE
ORDINAL_POSIT
IS_NULLABLE
//以下是源代码
import java.sql.*;
import java.util.*;
public class ColumnExample
{
public static void main(String arg[])
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Properties p=new Properties();
p.put("user","sa");
p.put("password","wzhdxtx");
Connection con=DriverManager.getConnection("jdbc:odbc:er",p);
DatabaseMetaData db=con.getMetaData();
ResultSet columns=db.getColumns("","DBA","test","");
ResultSetMetaData rsmd=columns.getMetaData();
int number=rsmd.getColumnCount();
for (int i=1;i<number;i++)
{
System.out.println(rsmd.getColumnName(i));
}
/* while (columns.next())
{
System.out.println("kao");
System.out.println(columns.getString(4));
}*/
}
catch(SQLException e)
{
System.out.println(e.getMessage());
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}
Connection con=DriverManager.getConnection("jdbc:odbc:er","sa","wzhdxtx");
Statement st = con.createStatement();
ResultSet rs = st.execute("select * from tablename");
得到resultset,不管是否有结果,然后再获取列名
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
for(int i=0;i<numberOfColumns;i++){
System.out.println(rsmd.getColumnName(i));
}
这阳是没错。但我最初贴出来的这种方式也应该可以得到表中每列的信息的。为什么这样做却得不到了。奇怪。由是跟不同厂商的jdbc驱动有关吗
<html>
<head>
<title>
Jdbcjsp1
</title>
</head>
<body>
<%
try
{
String url=new String();
url="jdbc:odbc:test";
//加载jdbc-odbc brige驱动程序:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//与url指定的数据源进行连接:
Connection con=DriverManager.getConnection(url,"sa","03260908");
//获得DatabaseMetaData对象,显示关于数据源的一些信息:
DatabaseMetaData dma=con.getMetaData();
out.println("connected to:" + dma.getURL());
out.println("Driver:" + dma.getDriverName());
out.println("version" + dma.getDriverVersion());
//显示数据表中的内容:
Statement stmt =con.createStatement();
//PreparedStatement pstmt=con.prepareStatement(")
String sql="select * from name";
ResultSet rs=stmt.executeQuery(sql);
ResultSetMetaData rsmd=rs.getMetaData();
int numbersofcolumn=rsmd.getColumnCount();
out.print("<br>");
out.print(numbersofcolumn);
out.print("<br>");
for(int i=0;i<numbersofcolumn;i++)
{
out.print(rsmd.getColumnName(i));
} while (rs.next())
{
String name=new String();
name=rs.getString("name");
out.println(name);
}
rs.close();
stmt.close();
con.close();
}
catch(SQLException ex)
{
out.println("Message" +ex.getMessage());
}
%>
</body>
</html>