java jdbc metadata

0:metadata api:

http://docs.oracle.com/javase/6/docs/api/java/sql/DatabaseMetaData.html

1:java jdbcmetadata 获取表数据

获取表的信息。

m_DBMetaData = m_Connection.getMetaData();

ResultSet tableRet = m_DBMetaData.getTables(null, "%",m_TableName,new String[]{"TABLE"});

其中"%"就是表示*的意思,也就是任意所有的意思。其中m_TableName就是要获取的数据表的名字,如果想获取所有的表的名字,就可以使用"%"来作为参数了。 3. 提取表的名字。

while(tableRet.next) System.out.println(tableRet.getString("TABLE_NAME"));

通过getString("TABLE_NAME"),就可以获取表的名字了。

从这里可以看出,前面通过getTables的接口的返回,JDBC是将其所有的结果,保存在一个类似table的内存结构中,而其中TABLE_NAME这个名字的字段就是每个表的名字。

2:提取表内列信息

String columnName;

String columnType;

ResultSet colRet = m_DBMetaData.getColumns(null,"%", m_TableName,"%");

while(colRet.next()) {

columnName = colRet.getString("COLUMN_NAME");

columnType = colRet.getString("TYPE_NAME");

int datasize = colRet.getInt("COLUMN_SIZE");

int digits = colRet.getInt("DECIMAL_DIGITS");

int nullable = colRet.getInt("NULLABLE");

System.out.println(columnName+" "+columnType+" "+datasize+" "+digits+" "+

nullable);

}

JDBC里面通过getColumns的接口,实现对字段的查询。跟getTables一样,"%"表示所有任意的(字段),而m_TableName就是数据表的名字。

getColumns的返回也是将所有的字段放到一个类似的内存中的表,而COLUMN_NAME就是字段的名字,TYPE_NAME就是数据类型,比如"int","int unsigned"等等,COLUMN_SIZE返回整数,就是字段的长度,比如定义的int(8)的字段,返回就是8,最后NULLABLE,返回1就表示可以是Null,而0就表示Not Null。

3:通过查询获取metadata

Statement stmt = conn.createStatement() ;

      // Execute the query
      ResultSet rs = stmt.executeQuery( "SELECT * FROM Cust" ) ;

      // Get the metadata
      ResultSetMetaData md = rs.getMetaData() ;

      // Print the column labels
      for( int i = 1; i <= md.getColumnCount(); i++ )
         System.out.print( md.getColumnLabel(i) + " " ) ;
      System.out.println() ;

      // Loop through the result set
      while( rs.next() )
         {
          for( int i = 1; i <= md.getColumnCount(); i++ )
             System.out.print( rs.getString(i) + " " ) ;
          System.out.println() ;
         }

      // Close the result set, statement and the connection
      rs.close() ;
      stmt.close() ;
      conn.close() ;
 

你可能感兴趣的:(java,metadata)