PreparedStatement ps = con.prepareStatement(sql); ResultSet rs = ps.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData(); for (int i = 1; i <= rsmd.getColumnCount(); i++) { System.out.println(rsmd.getColumnName(i));//字段名称 System.out.println(rsmd.getPrecision(i));//字段小数位数 } DatabaseMetaData dmd = con.getMetaData(); ResultSet rss = dmd.getPrimaryKeys(null, null, tableName); if (rss.next()) { System.out.println(rss.getString(4));//主键名称 }
楼上的两位谢谢啦·~~不过我这里还是不能运行。显示的错误为 java.sql.SQLException: No current row in the ResultSet. at net.sourceforge.jtds.jdbc.JtdsResultSet.getColumn(JtdsResultSet.java:282) at net.sourceforge.jtds.jdbc.JtdsResultSet.getString(JtdsResultSet.java:930) at cn.util.CreateXMLSql.outputElement(CreateXMLSql.java:112) at cn.util.CreateXMLSql.outputDatabaseToPath(CreateXMLSql.java:67) at cn.test.Test.main(Test.java:13) 你们那能正常运行的吗??
static void read(String sql, Object[] p) throws Exception {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
ps = conn.prepareStatement(sql);
ParameterMetaData pmd = ps.getParameterMetaData();
int count = pmd.getParameterCount();
for (int i = 1; i <= p.length; i++) {
System.out.print(pmd.getParameterClassName(i)+"\t");
System.out.print(pmd.getParameterType(i)+"\t");
System.out.println(pmd.getParameterTypeName(i));
ps.setObject(i, p[i-1]); }
rs = ps.executeQuery();
}
可能得到到你想要的那么多的项。
PreparedStatement ps = con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
System.out.println(rsmd.getColumnName(i));//字段名称
System.out.println(rsmd.getPrecision(i));//字段小数位数
}
DatabaseMetaData dmd = con.getMetaData();
ResultSet rss = dmd.getPrimaryKeys(null, null, tableName);
if (rss.next()) {
System.out.println(rss.getString(4));//主键名称
}
java.sql.SQLException: No current row in the ResultSet.
at net.sourceforge.jtds.jdbc.JtdsResultSet.getColumn(JtdsResultSet.java:282)
at net.sourceforge.jtds.jdbc.JtdsResultSet.getString(JtdsResultSet.java:930)
at cn.util.CreateXMLSql.outputElement(CreateXMLSql.java:112)
at cn.util.CreateXMLSql.outputDatabaseToPath(CreateXMLSql.java:67)
at cn.test.Test.main(Test.java:13)
你们那能正常运行的吗??
另外用sql语句desc tablename也可以,只是需要自己解析结果而已,这是标准语法,各种数据库都支持
select * from tab_room where roomid = 222
如果还不行,你试试以下方法:con = getConnection();
String sql = "exec sp_pkeys tab_room";
PreparedStatement ps = con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
System.out.println(rs.getString("COLUMN_NAME"));
}即调用SQL Server中的内置存储过程sp_pkeys, tab_room是表的名称
我这里又出现:[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'tab_room' 无效。
tab_room 是我这边的一个表名称,你要改为你那边的表名称
我用的是这个包
jtds-1.2.5.jar
网上有下载的,这里传不了附件。