论坛首页 入门技术论坛

MySql驱动通过元数据无法取得表注释

浏览 2140 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-01-08   最后修改:2010-01-08

今天需要读取MySql的一个表格的注释,看到通过元数据可以读取,进行了测试代码,就是读取不出来,值为空,但是查看元数据表TABLES中的TABLE_COMMENT字段值是存在的,感觉异常奇怪,本来是在eclipse的插件中进行读取,难道需要自己手动编写读取代码?真是郁闷啊

    然后下载了Mysql的驱动源程序进行了代码的查询,发现他根本就不会读取注释字段,他所有的元数据表信息中的信息都来源于SHOW FULL TABLES FROM这个语句,这个语句只提供了二列数据

| Tables_in_pf       | Table_type |

也就是表明和表的类型

他在代码生命取得数据的时候已经将表注释长度设置成0了,所有根本无法从驱动的元数据中读取到表格的注释信息

  fields[0] = new Field("", "TABLE_CAT", java.sql.Types.VARCHAR, 255);
  fields[1] = new Field("", "TABLE_SCHEM", java.sql.Types.VARCHAR, 0);
  fields[2] = new Field("", "TABLE_NAME", java.sql.Types.VARCHAR, 255);
  fields[3] = new Field("", "TABLE_TYPE", java.sql.Types.VARCHAR, 5);
  fields[4] = new Field("", "REMARKS", java.sql.Types.VARCHAR, 0); ----存放注释的内容,长度为0

 

 

估计用的很少吧,这种需求都不能满足。

=====================

考虑到开发的需要,建立新里开发驱动,等到正式系统运行的时候采用正式的驱动程序,现在希望oracle的驱动可以读取到这个值。

扩展添加方法

 private byte[] getTableComment(String tableName,Connection conn){
  Statement st=null;
  ResultSet rs=null;
  String result="";
  try {
   st = conn.createStatement();
   rs = st.executeQuery("SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='"+tableName+"'");
   while(rs.next()){
    result = rs.getString(1);
    break;
   }
  } catch (SQLException e) {
   e.printStackTrace();
  }finally{
   try {
    if(rs!=null)rs.close();
    rs = null;
    if(st!=null)st.close();
    st=null;
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return result.getBytes();
 }

经过测试程序读取,真的可以去到了

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics