如何获取数据库字段对应的表名?

tom0421 2009-12-15 09:12:44
我是这样写的:

// 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等数据库却无法取得,不知道原因在哪里,我又应该怎么写?
...全文
92 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_test 2012-09-03
  • 打赏
  • 举报
回复
谢谢,很有用。
zys2419740 2009-12-15
  • 打赏
  • 举报
回复
同意2楼观点
hitlcyu19 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dinghun8leech 的回复:]
1.不清楚楼主为何有这样的需求,程序在编译期仍然不知道表和表结构??楼主难道没将数据表做成持久化模型?
2.第二步似乎不用做PreparedStatement的强制类型转换。
3.sqlServer和mysql在一些操作上确实有区别,比如desc table、show tables,都不能在sqlserver上使用,所以我觉得楼主想要在运行期探查数据库表结构,这种方法似乎不怎么好。
[/Quote]
PreparedStatement连接数据库没有什么问题 但是1,3还是说的不错吧 我个人的观点啊
Trinx 2009-12-15
  • 打赏
  • 举报
回复
java技术交流群100756746,希望大家加入,我们共同讨论,共同进步!
tom0421 2009-12-15
  • 打赏
  • 举报
回复
我是要探测其他应用的数据库,这是在并不知道对方数据库结构的情况的探测,比如数据网关、系统集成之类的系统
BlackGlove 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dinghun8leech 的回复:]
1.不清楚楼主为何有这样的需求,程序在编译期仍然不知道表和表结构??楼主难道没将数据表做成持久化模型?
2.第二步似乎不用做PreparedStatement的强制类型转换。
3.sqlServer和mysql在一些操作上确实有区别,比如desc table、show tables,都不能在sqlserver上使用,所以我觉得楼主想要在运行期探查数据库表结构,这种方法似乎不怎么好。
[/Quote]

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

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧