我是这样写的:// sql语句
String sql = "select a.*, b.* from table1 a, table2 b";
// 链接数据库
Connection conn = MySqlConnection.getConnection();
PreparedStatement ps = (PreparedStatement) conn
.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs = ps.executeQuery();// 获取数据
while (rs.next()) {

for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
// 存放数据,以“表.字段”形式
System.out.println(rs.getMetaData().getTableName(i) + "."
+ rs.getMetaData().getColumnLabel(i));
}

}

结果是mysql数据库可以正常的取得表名。可是sqlserver等数据库却无法取得,不知道原因在哪里,我又应该怎么写?

解决方案 »

  1.   

    1.不清楚楼主为何有这样的需求,程序在编译期仍然不知道表和表结构??楼主难道没将数据表做成持久化模型?
    2.第二步似乎不用做PreparedStatement的强制类型转换。
    3.sqlServer和mysql在一些操作上确实有区别,比如desc table、show tables,都不能在sqlserver上使用,所以我觉得楼主想要在运行期探查数据库表结构,这种方法似乎不怎么好。
      

  2.   

    java技术交流群100756746,希望大家加入,我们共同讨论,共同进步!
      

  3.   

    PreparedStatement连接数据库没有什么问题 但是1,3还是说的不错吧 我个人的观点啊