注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

TOTO

Think and Be Different

 
 
 

日志

 
 

Java中查找某个表是否在数据库已经存在  

2009-02-24 14:33:18|  分类: 看看书 写写笔记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
采用的是: 
(1) DatabaseMetaData meta = conn.getMetaData();
(2) ResultSet set ;//= meta.getTables(null, null, table, null);
set = meta.getTables(null, null, table.toUpperCase(), null);

这个很奇怪,有些数据库是忽略大小写,而有些不是,有些默认是直接使用大写的,那么如果使用小写的table,就会查找不到。一般来说都是存储为大写,至少在Derby里面,它就是生成了大写的表名,这个让我在判断是否存在的时候很困惑,不过现在解决了。

我看了MySQL,它在建表的时候表名和数据库中的表名是一致的,不会出现上述问题。
当然,还有一个万能的解决方案,就是将table改成%
然后从查询结果中遍历set.getString(3).equalsIgnoreCase(tableName);
这样的话,很不优美,应该还有其他的解决方案,只不过我现在还不知道。

下面附上简单的代码: 



public boolean hasTable(String table) throws SQLException{
if(conn == null){
throw new SQLException("Connection has not been established!");
}
boolean state = false;
DatabaseMetaData meta = conn.getMetaData();
ResultSet set ;//= meta.getTables(null, null, table, null);
set = meta.getTables(null, null, table.toUpperCase(), null);
while (set.next()) {
state = true;
log.debug("Has Table " + table);
}
return state;
}
  评论这张
 
阅读(796)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017