关于ResultSetMetaData,求教取得sqlserver 字段注释释的问题

DatabaseMetaData 有关整个数据库的信息:表名、表的索引、数据库产品的名称和版本、数据库支持的操作。 ResultSet 关于某个表的信息或一个查询的结果。您必须逐行访问数据行,但是您可以任何顺序访问列。 ResultSetMetaData 有关 ResultSet 中列的名称和类型的信息。 尽管每个对象都有大量的方法让您获得数据库元素的极为详细的信息,但在每个对象中都有几种主要的方法使您可获得数据的最重要信息。然而,如果您希望看到比此处更多的信息,建议您学习文档以获得其余方法的说明。 ResultSet ResultSet 对象是 JDBC 中最重要的单个对象。从本质上讲,它是对一个一般宽度和未知长度的表的一种抽象。几乎所有的方法和查询都将数据作为 ResultSet 返回。ResultSet 包含任意数量的命名列,您可以按名称访问这些列。它还包含一个或多个行,您可以按顺序自上而下逐一访问。在您使用 ResultSet 之前,必须查询它包含多少个列。此信息存储在 ResultSetMetaData 对象中。 //从元数据中获得列数 ResultSetMetaD rsmd = results.getMetaData(); numCols = rsmd.getColumnCount(); 当您获得一个 ResultSet 时,它正好指向第一行之前的位置。您可以使用 next() 方法得到其他每一行,当没有更多行时,该方法会返回 false。由于从数据库中获取数据可能会导致错误,您必须始终将结果集处理语句包括在一个 try 块中。 您可以多种形式获取 ResultSet 中的数据,这取决于每个列中存储的数据类型。另外,您可以按列序号或列名获取列的内容。请注意,列序号从 1 开始,而不是从 0 开始。ResultSet 对象的一些最常用方法如下所示。 getInt(int); 将序号为 int 的列的内容作为整数返回。 getInt(String); 将名称为 String 的列的内容作为整数返回。 getFloat(int); 将序号为 int 的列的内容作为一个 float 型数返回。 getFloat(String); 将名称为 String 的列的内容作为 float 型数返回。 getDate(int); 将序号为 int 的列的内容作为日期返回。 getDate(String); 将名称为 String 的列的内容作为日期返回。 next(); 将行指针移到下一行。如果没有剩余行,则返回 false。 Close(); 关闭结果集。 getMetaData(); 返回 ResultSetMetaData 对象。 ResultSetMetaData 您使用 getMetaData() 方法从 ResultSet 中获取 ResultSetMetaData 对象。您可以使用此对象获得列的数目和类型以及每一列的名称。 getColumnCount(); 返回 ResultSet 中的列数。 getColumnName(int); 返回列序号为 int 的列名。 getColumnLabel(int); 返回此列暗含的标签。 isCurrency(int); 如果此列包含带有货币单位的一个数字,则返回 true。 isReadOnly(int); 如果此列为只读,则返回 true。 isAutoIncrement(int); 如果此列自动递增,则返回 true。这类列通常为键,而且始终是只读的。 getColumnType(int); 返回此列的 SQL 数据类型。这些数据类型包括 BIGINT BINARY BIT CHAR DATE DECIMAL DOUBLE FLOAT INTEGER LONGVARBINARY LONGVARCHAR NULL NUMERIC OTHER REAL SMALLINT TIME TIMESTAMP TINYINT VARBINARY VARCHAR DatabaseMetaData DatabaseMetaData 对象可为您提供整个数据库的信息。您主要用它获取数据库中表的名称,以及表中列的名称。由于不同的数据库支持不同的 SQL 变体,因此,也有多种方法查询数据库支持哪些 SQL 方法。 getCatalogs() 返回该数据库中的信息目录列表。使用 JDBC-ODBC Bridge 驱动程序,您可以获得用 ODBC 注册的数据库列表。这很少用于 JDBC-ODBC 数据库。 getTables(catalog, schema,tableNames, columnNames) 返回表名与 tableNames 相符而且列名与 columnNames 相符的所有表的说明。 getColumns(catalog, schema,tableNames, columnNames) 返回表名与 tableNames 相符而且列名与 columnNames 相符的所有表列说明。 getURL(); 获得您所连接的 URL 名称。 getDriverName(); 获得您所连接的数据库驱动程序的名称。 获取有关表的信息 您可以使用 DataBaseMetaData 的 getTables() 方法来获取数据库中表的信息。这个方法有如下4个 String 参数: results =dma.getTables(catalog, schema, tablemask, types[]); 其中参数的意义是: Catalog 要在其中查找表名的目录名。对于 JDBC-ODBC 数据库以及许多其他数据库而言,可将其设置为 null。这些数据库的目录项实际上是它在文件系统中的绝对路径名称。 Schema 要包括的数据库“方案”。许多数据库不支持方案,而对另一些数据库而言,它代表数据库所有者的用户名。一般将它设置为 null。 Tablemask 一个掩码,用来描述您要检索的表的名称。如果您希望检索所有表名,则将其设为通配符 %。请注意,SQL 中的通配符是 % 符号,而不是一般 PC 用户的 * 符号。 types[] 这是描述您要检索的表的类型的 String 数组。数据库中通常包括许多用于内部处理的表,而对作为用户的您没什么价值。如果它是空值,则您会得到所有这些表。如果您将其设为包含字符串“TABLES”的单元素数组,您将仅获得对用户有用的表格。 一个简单的 JDBC 程序 我们已经学习了 JDBC 的所有基本功能,现在我们可以编写一个简单的程序,该程序打开数据库,打印它的表名以及某一表列的内容,然后对该数据库执行查询。此程序如下所示:
import java.sql.*; public class JdbcOdbc_test { ResultS ResultSetMetaD DatabaseMetaD C public JdbcOdbc_test() throws SQLException { String url = "jdbc:odbc:Northwind"; try { //加载 JDBC-ODBC 桥驱动程序 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection(url);//连接数据库 dma = con.getMetaData();//获取数据库的元数据 System.out.println("Connected to:" + dma.getURL()); System.out.println("Driver " + dma.getDriverName()); } catch (Exception e) { System.out.println(e); } try { Statement stmt = con.createStatement(); results = stmt.executeQuery("select * from 客户;"); ResultSetMetaData resultMetaData = results.getMetaData(); int cols = resultMetaData.getColumnCount(); String resultRow = ""; for (int i = 1; i & i++) { resultRow += resultMetaData.getColumnName(i) + ";"; } System.out.println(resultRow); while (results.next()) { resultRow = ""; for (int i = 1; i & i++) { try { resultRow += results.getString(i) + ";"; } catch (NullPointerException e) { System.out.println(e.getMessage()); } } System.out.println(resultRow); } } catch (Exception e) { System.out.println("query exception"); } finally { results.close(); } } } 补充高级内容 关于调用SQLServer存储过程的例子:(用到了我们开发的数据库连接类) CREATE PROCEDURE [dbo].[sp_getStudentByName](@name char(10)) AS Select * from Students where [Name]=@name GO DbObject DbO = new DbObject(new SqlServerConnectionFactory("localhost", 1433, "demo", "sa", "")); Connection con = DbO.getConnection(); CallableStatement pstmt = System.out.println("TestDB1()............"); /* try { pstmt = con.prepareCall("{call sp_getStudentById(?)}"); pstmt.setInt(1, 1); }*/ try { pstmt = con.prepareCall("{call sp_getStudentByName(?)}"); //注意参数如何传递 pstmt.setString(1, "Tom"); } …… 使用输出参数: CREATE PROCEDURE [dbo].[sp_insertStudent](@name char(10),@age int,@id int OUTPUT) AS insert into Students([Name],[Age]) values (@name,@age) select @id=@@IDENTITY GO try { pstmt = con.prepareCall("{call sp_insertStudent(?,?,?)}"); pstmt.setString(1, "zengqingsong"); pstmt.setInt(2, 22); pstmt.registerOutParameter(3, Types.INTEGER); pstmt.executeUpdate(); int id = pstmt.getInt(3); System.out.println(id); } 使用返回参数的例子: CREATE PROCEDURE [dbo].[sp_insertStudent](@name char(10),@age int,@id int OUTPUT) AS insert into Students([Name],[Age]) values (@name,@age) select @id=@@IDENTITY –测试输出参数 return 30 –测试返回30 GO try { pstmt = con.prepareCall("{?=call sp_insertStudent(?,?,?)}"); pstmt.setString(2, "zengqingsong"); pstmt.setInt(3, 22); pstmt.registerOutParameter(4, Types.INTEGER); pstmt.registerOutParameter(1, Types.INTEGER); int ret = pstmt.executeUpdate(); //执行影响的行数 int ret2 = pstmt.getInt(1); //返回参数(输出参数) int id = pstmt.getInt(4); //输出参数 System.out.println(ret); System.out.println(ret2); System.out.println(id);
阅读(...) 评论() & 上传我的文档
 下载
 收藏
毕业于医学院校,在医院工作,有相对丰富的护理经验
 下载此文档
正在努力加载中...
获得结果集的字段名称,ResultSet的属性要调用ResultSetMetaData的方法
下载积分:1500
内容提示:获得结果集的字段名称,ResultSet的属性要调用ResultSetMetaData的方法
文档格式:DOCX|
浏览次数:37|
上传日期: 04:04:02|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1500 积分
下载此文档
该用户还上传了这些文档
获得结果集的字段名称,ResultSet的属性要调用ResultSe
关注微信公众号当前位置: →
→ 透过DatabaseMetaData从Oracle中获取字段的注释
透过DatabaseMetaData从Oracle中获取字段的注释
& 作者:佚名 & 来源: 互联网 &
&收藏到→_→:
摘要: 通过DatabaseMetaData从Oracle中获取字段的注释 今天在扩展ibator插件时,在生成model中每个field的注释时,想从oracle数据库中获取每个字段的comments作为注释.使用jdbc的支持,代码如下:
"透过DatabaseMetaData从Oracle中获取字段的注释"::
通过 metadata从oracle中获取字段的注释
今天在扩展ibator插件时,在生成model中每个field的注释时,想从oracle 中获取每个字段的comments作为注释.使用jdbc的支持,代码如下:
resultset rs = (java.sql. metadata) metadata.getcolumns(localcatalog, localschema, localtablename, null);
while (rs.next()){
rs.getstring("remarks"));
.............................
java.sql. metadata.getcolumns 这个方法从注释就能清楚的看到,可以获取 的很多元信息,当然包括表和字段的注释.但是,我获取时,却是null.google了半天,发现原来oracle是需要在连接jdbc获取connection时通过一个参数来设置是否能获取comments.具体如下:
properties props =newproperties();
props.put("remarksreporting","true");class.forname("oracle.jdbc.driver.oracledriver");
dbconn = drivermanager.getconnection(url, props); metadata dbmd = dbconn.getmetadata();
rs = dbmd.getcolumns(null,"ops$aimsadm","aircrafts","code");
if(rs.next()) {system.out.println("remarks: "+ rs.getobject(12)); }
搜索此文相关文章: 中获取字段的注释此文来自: 马开东博客
网址: 站长QQ
透过DatabaseMetaData从Oracle中获取字段的注释_数据库相关文章
数据库_总排行榜
数据库_最新
数据库_月排行榜
数据库_周排行榜
数据库_日排行榜ResultSetMetaData和DatabaseMetaData用法简介(转) - 塞翁失马 - CSDN博客
ResultSetMetaData和DatabaseMetaData用法简介(转)
java swing
内容概要:
1、ResultSetMetaData中的方法的介绍。
2、DatabaseMetaData中主要方法的介绍。
3、如何使用DatabaseMetaData类获得的信息进行反向设计表。
??? 在论坛中看到有好多人问关于,数据库中信息和表的信息的获得的问题,如:数据库中有多少表,表中的字段的含义等,为了解决这个问题我学习了相关的两个类ResultSetMetaData和DataBaseMetaData来解决相关问题。下面是我的一些学习的心得体会,希望能够给朋友们带来一点启示或者帮助。首先是ResultSetMetaData:
这个类完成了查询结果信息和结果中的列的各种信息。它包含的方法以及各个方法的作用,在下面这个演示程序中一一介绍。在这个演示程序中用到数据库是Access的,数据库中的表的名字是STUDENTINFO表,包含字段有
IDNO 文本型 长为8
NAME 文本型 长为8
SEX 文本型 长为6
AGE 数值型 长为8
BIRTHDT 文本型 长为8
程序中主要是操作这个表,选择的驱动是ODBC。程序如下:
package&javax.util.import&java.sql.*;public&class&DBAccess&...{&&public&static&java.sql.Connection&conn&=&null;&&private&String&sqlStr&=&&&;&&public&DBAccess()&...{&&&&try&...{&&&&&&Class.forName(&sun.jdbc.odbc.JdbcOdbcDriver&);&&&&&&conn&=&DriverManager.getConnection(&jdbc:odbc:TestDB&,&&admin&,&&&);&&&&}catch&(ClassNotFoundException&ex)&...{&&&&&&System.out.println(ex.toString());&&&&}catch&(SQLException&sqlEx)&...{&&&&&&System.out.println(sqlEx.toString());&&&&}&&&&&}&&public&ResultSet&Search()&...{&&&&ResultSet&rset&=&null;&&&&sqlStr&=&&SELECT&*&FROM&STUDENTINF&&;&&&&Statement&smt&=&null;&&&&try&...{&&&&&&smt&=&conn.createStatement();&&&&&&rset&=&smt.executeQuery(sqlStr);&&&&}&&&&catch&(SQLException&ex)&...{&&&&&&System.out.println(&Exception:&&+&ex.toString());&&&&}&&&&return&&&}&&public&void&getResultSetMetaData()...{&&&&ResultSet&rs&=&null;&&&&try&...{&&&&&&String[]&tp&=&...{&TABLE&};&&&&&&rs&=&this.Search();&&&&&&ResultSetMetaData&rsmd&=&rs.getMetaData();&&&&&&/**//*&&&&&&&获得ResultSetMeataData对象。所有方法的参数都是列的索引号,即第几列,从1开始&&&&&&&*/&&&&&&System.out.println(&下面这些方法是ResultSetMetaData中方法&);&&&&&&System.out.println(&获得1列所在的Catalog名字&:&&&+&rsmd.getCatalogName(1));&&&&&&System.out.println(&获得1列对应数据类型的类&&&+&rsmd.getColumnClassName(1));&&&&&&System.out.println(&获得该ResultSet所有列的数目&&&+&rsmd.getColumnCount());&&&&&&System.out.println(&1列在数据库中类型的最大字符个数&&+&rsmd.getColumnDisplaySize(1));&&&&&&System.out.println(&&1列的默认的列的标题&&+&rsmd.getColumnLabel(1));&&&&&&System.out.println(&1列的模式&&&+&rsmd.GetSchemaName(1));&&&&&&System.out.println(&1列的类型,返回SqlType中的编号&&&+&rsmd.getColumnType(1));&&&&&&System.out.println(&1列在数据库中的类型,返回类型全名&&+&rsmd.getColumnTypeName(1));&&&&&&System.out.println(&1列类型的精确度(类型的长度):&&&+&rsmd.getPrecision(1));&&&&&&System.out.println(&1列小数点后的位数&&&+&rsmd.getScale(1));&&&&&&System.out.println(&1列对应的模式的名称(应该用于Oracle)&&&+&rsmd.getSchemaName(1));&&&&&&System.out.println(&1列对应的表名&&&+&rsmd.getTableName(1));&&&&&&System.out.println(&1列是否自动递增&&+&rsmd.isAutoIncrement(1));&&&&&&System.out.println(&1列在数据库中是否为货币型&&+&rsmd.isCurrency(1));&&&&&&System.out.println(&1列是否为空&&+&rsmd.isNullable(1));&&&&&&System.out.println(&1列是否为只读&&&+&rsmd.isReadOnly(1));&&&&&&System.out.println(&1列能否出现在where中&&&+&rsmd.isSearchable(1));&&&&}&&&&catch&(SQLException&ex)&...{&&&&&&ex.printStackTrace();&&&&}&&}&&public&static&void&main(String&args[])...{&&&&DBAccess&dbAccess&=&new&DBAccess();&&&&dbAccess.getResultSetMetaData();&&}}
通过上面例子中的方法能够获得,ResultSet中的表的信息。ResultSetMetaData只是获得表的信息,使用DatabaseMetaData则是用来获得数据库的信息,下面介绍这个类的使用方法。
DatabaseMetaData对象提供的是关于数据库的各种信息,这些信息包括:
1、数据库与用户,数据库标识符以及函数与存储过程。
2、数据库限制。
3、数据库支持不支持的功能。
4、架构、编目、表、列和视图等。
通过调用DatabaseMetaData的各种方法,程序可以动态的了解一个数据库。由于这个类中的方法非常的多那么就介绍几个常用的方法来给大家参考。
DatabaseMetaData实例的获取方法是,通过连接来获得的
Connection conn = //创建的连接。
DatabaseMetaData dbmd = Conn.getMetaData();
创建了这个实例,就可以使用他的方法来获取数据库得信息。首先是数据库中用户标识符的信息的获得,主要使用如下的方法:
getDatabaseProductName()用以获得当前数据库是什么数据库。比如oracle,access等。返回的是字符串。
getDatabaseProductVersion()获得数据库的版本。返回的字符串。
getDriverVersion()获得驱动程序的版本。返回字符串。
supportsResultSetType(ResultSet.resultype)是判定是否支持这种结果集的类型。比如参数如果是Result.TYPE_FORWARD_ONLY,那就是判定是否支持,只能先前移动结果集的指针。返回值为boolean,true表示支持。
上面介绍的只是几个常用的方法,这个类中还有很多方法,可以到jdk的帮助文档中去查看类java.sql.DatabaseMetaData。
这个类中还有一个比较常用的方法就是获得表的信息。使用的方法是:
getTables(String catalog,String schema,String tableName,String[] types),
这个方法带有四个参数,他们表示的含义如下:
String catalog&&要获得表所在的编目。串&&&&意味着没有任何编目,Null表示所有编目。
String schema&&要获得表所在的模式。串&&&&意味着没有任何模式,Null表示所有模式。该参数可以包含单字符的通配符(&_&),也可以包含多字符的通配符(&%&)。
String tableName&&指出要返回表名与该参数匹配的那些表,该参数可以包含单字符的通配符(&_&),也可以包含多字符的通配符(&%&)。
String types&&一个指出返回何种表的数组。可能的数组项是:&TABLE&,&VIEW&,
&SYSTEM TABLE&,&GLOBAL TEMPORARY&,&LOCAL TEMPORARY&,&ALIAS&,
&SYSNONYM&。
通过getTables()方法返回一个表的信息的结果集。这个结果集包括字段有:TABLE_CAT表所在的编目。TABLE_SCHEM表所在的模式,TABLE_NAME表的名称。TABLE_TYPE标的类型。REMARKS一段解释性的备注。通过这些字段可以完成表的信息的获取。
还有两个方法一个是获得列getColumns(String catalog,String schama,String tablename,String columnPattern)一个是获得关键字的方法(?catalog, ?schema, ?table)这两个方法中的参数的含义和上面的介绍的是相同的。凡是pattern的都是可以用通配符匹配的。getColums()返回的是结果集,这个结果集包括了列的所有信息,类型,名称,可否为空等。getPrimaryKey()则是返回了某个表的关键字的结果集。
通过getTables(),getColumns(),getPrimaryKeys()就可以完成表的反向设计了。主要步骤如下:
1、通过getTables()获得数据库中表的信息。
2、对于每个表使用,getColumns(),getPrimaryKeys()获得相应的列名,类型,限制条件,关键字等。
3、通过1,2获得信息可以生成相应的建表的SQL语句。
??? 通过上述三步完成反向设计表的过程。
DatabaseMetaData所涉及的常用功能主要是上面这些,如果我有哪些地方理解的有问题,请大家指出,谢谢。
通过上面例子中的方法能够获得,ResultSet中的表的信息。ResultSetMetaData只是获得表的信息,使用DatabaseMetaData则是用来获得数据库的信息,下面介绍这个类的使用方法。
DatabaseMetaData对象提供的是关于数据库的各种信息,这些信息包括:
1、数据库与用户,数据库标识符以及函数与存储过程。
2、数据库限制。
3、数据库支持不支持的功能。
4、架构、编目、表、列和视图等。
通过调用DatabaseMetaData的各种方法,程序可以动态的了解一个数据库。由于这个类中的方法非常的多那么就介绍几个常用的方法来给大家参考。
DatabaseMetaData实例的获取方法是,通过连接来获得的
Connection conn = //创建的连接。
DatabaseMetaData dbmd = Conn.getMetaData();
创建了这个实例,就可以使用他的方法来获取数据库得信息。首先是数据库中用户标识符的信息的获得,主要使用如下的方法:
getDatabaseProductName()用以获得当前数据库是什么数据库。比如oracle,access等。返回的是字符串。
getDatabaseProductVersion()获得数据库的版本。返回的字符串。
getDriverVersion()获得驱动程序的版本。返回字符串。
supportsResultSetType(ResultSet.resultype)是判定是否支持这种结果集的类型。比如参数如果是Result.TYPE_FORWARD_ONLY,那就是判定是否支持,只能先前移动结果集的指针。返回值为boolean,true表示支持。
上面介绍的只是几个常用的方法,这个类中还有很多方法,可以到jdk的帮助文档中去查看类java.sql.DatabaseMetaData。
这个类中还有一个比较常用的方法就是获得表的信息。使用的方法是:
getTables(String catalog,String schema,String tableName,String[] types),
这个方法带有四个参数,他们表示的含义如下:
String catalog&&要获得表所在的编目。串&&&&意味着没有任何编目,Null表示所有编目。
String schema&&要获得表所在的模式。串&&&&意味着没有任何模式,Null表示所有模式。该参数可以包含单字符的通配符(&_&),也可以包含多字符的通配符(&%&)。
String tableName&&指出要返回表名与该参数匹配的那些表,该参数可以包含单字符的通配符(&_&),也可以包含多字符的通配符(&%&)。
String types&&一个指出返回何种表的数组。可能的数组项是:&TABLE&,&VIEW&,
&SYSTEM TABLE&,&GLOBAL TEMPORARY&,&LOCAL TEMPORARY&,&ALIAS&,
&SYSNONYM&。
通过getTables()方法返回一个表的信息的结果集。这个结果集包括字段有:TABLE_CAT表所在的编目。TABLE_SCHEM表所在的模式,TABLE_NAME表的名称。TABLE_TYPE标的类型。REMARKS一段解释性的备注。通过这些字段可以完成表的信息的获取。
还有两个方法一个是获得列getColumns(String catalog,String schama,String tablename,String columnPattern)一个是获得关键字的方法(?catalog, ?schema, ?table)这两个方法中的参数的含义和上面的介绍的是相同的。凡是pattern的都是可以用通配符匹配的。getColums()返回的是结果集,这个结果集包括了列的所有信息,类型,名称,可否为空等。getPrimaryKey()则是返回了某个表的关键字的结果集。
通过getTables(),getColumns(),getPrimaryKeys()就可以完成表的反向设计了。主要步骤如下:
1、通过getTables()获得数据库中表的信息。
2、对于每个表使用,getColumns(),getPrimaryKeys()获得相应的列名,类型,限制条件,关键字等。
3、通过1,2获得信息可以生成相应的建表的SQL语句。
??? 通过上述三步完成反向设计表的过程。
DatabaseMetaData所涉及的常用功能主要是上面这些,如果我有哪些地方理解的有问题,请大家指出,谢谢。
import java.sql.*;
public class DBAccess {
? public static java.sql.Connection conn =
? private String sqlStr = &&;
?public DBAccess()
??? //new sun.jdbc.odbc.JdbcOdbcDriver();
????? Class.forName(&sun.jdbc.odbc.JdbcOdbcDriver&);
????? conn = DriverManager.getConnection(&jdbc:odbc:TestDB&,&admin&,&&);
??? catch (ClassNotFoundException ex) {
????? System.out.println(ex.toString());
??? catch(SQLException sqlEx){
????? System.out.println(sqlEx.toString());
public ResultSet Search()? {
??? ResultSet rset =
??? sqlStr = &SELECT * FROM STUDENTINFO&;
?? Statement smt =
???? smt = conn.createStatement();
???? rset = smt.executeQuery(sqlStr);
?? catch (SQLException ex) {
???? System.out.println(&Exception:&+ex.toString());
? public void getResultSetMetaData()
?? ResultSet rs =
??? String[] tp = {&TABLE&};
??? rs = this.Search();
??? ResultSetMetaData rsmd = rs.getMetaData();???
获得ResultSetMeataData对象。所有方法的参数都是列的索引号,即第几列,从1开始
??? System.out.println(&下面这些方法是ResultSetMetaData中方法&);
??? System.out.println(&获得1列所在的Catalog名字 : & + rsmd.getCatalogName(1));
??? System.out.println(&获得1列对应数据类型的类 & + rsmd.getColumnClassName(1));
??? System.out.println(&获得该ResultSet所有列的数目 & + rsmd.getColumnCount());
??? System.out.println(&1列在数据库中类型的最大字符个数& + rsmd.getColumnDisplaySize(1));
??? System.out.println(& 1列的默认的列的标题& + rsmd.getColumnLabel(1));
??? System.out.println(&1列的模式& + rsmd.GetSchemaName(1));
??? System.out.println(&1列的类型,返回SqlType中的编号 & + rsmd.getColumnType(1));
??? System.out.println(&1列在数据库中的类型,返回类型全名& + rsmd.getColumnTypeName(1));
??? System.out.println(&1列类型的精确度(类型的长度): & + rsmd.getPrecision(1));
??? System.out.println(&1列小数点后的位数 & + rsmd.getScale(1));
??? System.out.println(&1列对应的模式的名称(应该用于Oracle) & + rsmd.getSchemaName(1));
??? System.out.println(&1列对应的表名 & + rsmd.getTableName(1));
??? System.out.println(&1列是否自动递增& + rsmd.isAutoIncrement(1));
??? System.out.println(&1列在数据库中是否为货币型& + rsmd.isCurrency(1));
??? System.out.println(&1列是否为空& + rsmd.isNullable(1));
??? System.out.println(&1列是否为只读& + rsmd.isReadOnly(1));
??? System.out.println(&1列能否出现在where中& + rsmd.isSearchable(1));??
? catch (SQLException ex) {
??? ex.printStackTrace();
?public static void main(String args[])
??? DBAccess dbAccess = new DBAccess();
??? dbAccess.getResultSetMetaData();
通过上面例子中的方法能够获得,ResultSet中的表的信息。ResultSetMetaData只是获得表的信息,使用DatabaseMetaData则是用来获得数据库的信息,下面介绍这个类的使用方法。
DatabaseMetaData对象提供的是关于数据库的各种信息,这些信息包括:
1、数据库与用户,数据库标识符以及函数与存储过程。
2、数据库限制。
3、数据库支持不支持的功能。
4、架构、编目、表、列和视图等。
通过调用DatabaseMetaData的各种方法,程序可以动态的了解一个数据库。由于这个类中的方法非常的多那么就介绍几个常用的方法来给大家参考。
DatabaseMetaData实例的获取方法是,通过连接来获得的
Connection conn = //创建的连接。
DatabaseMetaData dbmd = Conn.getMetaData();
创建了这个实例,就可以使用他的方法来获取数据库得信息。首先是数据库中用户标识符的信息的获得,主要使用如下的方法:
getDatabaseProductName()用以获得当前数据库是什么数据库。比如oracle,access等。返回的是字符串。
getDatabaseProductVersion()获得数据库的版本。返回的字符串。
getDriverVersion()获得驱动程序的版本。返回字符串。
supportsResultSetType(ResultSet.resultype)是判定是否支持这种结果集的类型。比如参数如果是Result.TYPE_FORWARD_ONLY,那就是判定是否支持,只能先前移动结果集的指针。返回值为boolean,true表示支持。
上面介绍的只是几个常用的方法,这个类中还有很多方法,可以到jdk的帮助文档中去查看类java.sql.DatabaseMetaData。
这个类中还有一个比较常用的方法就是获得表的信息。使用的方法是:
getTables(String catalog,String schema,String tableName,String[] types),
这个方法带有四个参数,他们表示的含义如下:
String catalog&&要获得表所在的编目。串&&&&意味着没有任何编目,Null表示所有编目。
String schema&&要获得表所在的模式。串&&&&意味着没有任何模式,Null表示所有模式。该参数可以包含单字符的通配符(&_&),也可以包含多字符的通配符(&%&)。
String tableName&&指出要返回表名与该参数匹配的那些表,该参数可以包含单字符的通配符(&_&),也可以包含多字符的通配符(&%&)。
String types&&一个指出返回何种表的数组。可能的数组项是:&TABLE&,&VIEW&,
&SYSTEM TABLE&,&GLOBAL TEMPORARY&,&LOCAL TEMPORARY&,&ALIAS&,
&SYSNONYM&。
通过getTables()方法返回一个表的信息的结果集。这个结果集包括字段有:TABLE_CAT表所在的编目。TABLE_SCHEM表所在的模式,TABLE_NAME表的名称。TABLE_TYPE标的类型。REMARKS一段解释性的备注。通过这些字段可以完成表的信息的获取。
还有两个方法一个是获得列getColumns(String catalog,String schama,String tablename,String columnPattern)一个是获得关键字的方法(?catalog, ?schema, ?table)这两个方法中的参数的含义和上面的介绍的是相同的。凡是pattern的都是可以用通配符匹配的。getColums()返回的是结果集,这个结果集包括了列的所有信息,类型,名称,可否为空等。getPrimaryKey()则是返回了某个表的关键字的结果集。
通过getTables(),getColumns(),getPrimaryKeys()就可以完成表的反向设计了。主要步骤如下:
1、通过getTables()获得数据库中表的信息。
2、对于每个表使用,getColumns(),getPrimaryKeys()获得相应的列名,类型,限制条件,关键字等。
3、通过1,2获得信息可以生成相应的建表的SQL语句。
??? 通过上述三步完成反向设计表的过程。
DatabaseMetaData所涉及的常用功能主要是上面这些,如果我有哪些地方理解的有问题,请大家指出,谢谢。
通过上面例子中的方法能够获得,ResultSet中的表的信息。ResultSetMetaData只是获得表的信息,使用DatabaseMetaData则是用来获得数据库的信息,下面介绍这个类的使用方法。
DatabaseMetaData对象提供的是关于数据库的各种信息,这些信息包括:
1、数据库与用户,数据库标识符以及函数与存储过程。
2、数据库限制。
3、数据库支持不支持的功能。
4、架构、编目、表、列和视图等。
通过调用DatabaseMetaData的各种方法,程序可以动态的了解一个数据库。由于这个类中的方法非常的多那么就介绍几个常用的方法来给大家参考。
DatabaseMetaData实例的获取方法是,通过连接来获得的
Connection conn = //创建的连接。
DatabaseMetaData dbmd = Conn.getMetaData();
创建了这个实例,就可以使用他的方法来获取数据库得信息。首先是数据库中用户标识符的信息的获得,主要使用如下的方法:
getDatabaseProductName()用以获得当前数据库是什么数据库。比如oracle,access等。返回的是字符串。
getDatabaseProductVersion()获得数据库的版本。返回的字符串。
getDriverVersion()获得驱动程序的版本。返回字符串。
supportsResultSetType(ResultSet.resultype)是判定是否支持这种结果集的类型。比如参数如果是Result.TYPE_FORWARD_ONLY,那就是判定是否支持,只能先前移动结果集的指针。返回值为boolean,true表示支持。
上面介绍的只是几个常用的方法,这个类中还有很多方法,可以到jdk的帮助文档中去查看类java.sql.DatabaseMetaData。
这个类中还有一个比较常用的方法就是获得表的信息。使用的方法是:
getTables(String catalog,String schema,String tableName,String[] types),
这个方法带有四个参数,他们表示的含义如下:
String catalog&&要获得表所在的编目。串&&&&意味着没有任何编目,Null表示所有编目。
String schema&&要获得表所在的模式。串&&&&意味着没有任何模式,Null表示所有模式。该参数可以包含单字符的通配符(&_&),也可以包含多字符的通配符(&%&)。
String tableName&&指出要返回表名与该参数匹配的那些表,该参数可以包含单字符的通配符(&_&),也可以包含多字符的通配符(&%&)。
String types&&一个指出返回何种表的数组。可能的数组项是:&TABLE&,&VIEW&,
&SYSTEM TABLE&,&GLOBAL TEMPORARY&,&LOCAL TEMPORARY&,&ALIAS&,
&SYSNONYM&。
通过getTables()方法返回一个表的信息的结果集。这个结果集包括字段有:TABLE_CAT表所在的编目。TABLE_SCHEM表所在的模式,TABLE_NAME表的名称。TABLE_TYPE标的类型。REMARKS一段解释性的备注。通过这些字段可以完成表的信息的获取。
还有两个方法一个是获得列getColumns(String catalog,String schama,String tablename,String columnPattern)一个是获得关键字的方法(?catalog, ?schema, ?table)这两个方法中的参数的含义和上面的介绍的是相同的。凡是pattern的都是可以用通配符匹配的。getColums()返回的是结果集,这个结果集包括了列的所有信息,类型,名称,可否为空等。getPrimaryKey()则是返回了某个表的关键字的结果集。
通过getTables(),getColumns(),getPrimaryKeys()就可以完成表的反向设计了。主要步骤如下:
1、通过getTables()获得数据库中表的信息。
2、对于每个表使用,getColumns(),getPrimaryKeys()获得相应的列名,类型,限制条件,关键字等。
3、通过1,2获得信息可以生成相应的建表的SQL语句。
??? 通过上述三步完成反向设计表的过程。
DatabaseMetaData所涉及的常用功能主要是上面这些,如果我有哪些地方理解的有问题,请大家指出,谢谢。
我的热门文章

我要回帖

更多关于 oracle 字段注释 的文章

 

随机推荐