`
- 浏览:
65955 次
- 性别:
- 来自:
西安
-
ResultSet转换List或直接遍历解决null问题
内容概要:1、ResultSetMetaData中的方法的介绍。2、DatabaseMetaData中主要方法的介绍。3、如何使用DatabaseMetaData类获得的信息进行反向设计表。在论坛中看到有好多人问关于,数据库中信息和表的信息的获得的问题,如:数据库中有多少表,表中的字段的含义等,为了解决这个问题我学习了相关的两个类ResultSetMetaData和DataBaseMetaData来解决相关问题。下面是我的一些学习的心得体会,希望能够给朋友们带来一点启示或者帮助。首先是ResultSetMetaData:这个类完成了查询结果信息和结果中的列的各种信息。它包含的方法以及各个方法的作用,在下面这个演示程序中一一介绍。在这个演示程序中用到数据库是Access的,数据库中的表的名字是STUDENTINFO表,包含字段有IDNO 文本型 长为8NAME 文本型 长为8SEX 文本型 长为6AGE 数值型 长为8BIRTHDT 文本型 长为8程序中主要是操作这个表,选择的驱动是ODBC。程序如下:
通过上面例子中的方法能够获得,ResultSet中的表的信息。ResultSetMetaData只是获得表的信息,使用DatabaseMetaData则是用来获得数据库的信息,下面介绍这个类的使用方法。DatabaseMetaData对象提供的是关于数据库的各种信息,这些信息包括:1、 数据库与用户,数据库标识符以及函数与存储过程。2、 数据库限制。3、 数据库支持不支持的功能。4、 架构、编目、表、列和视图等。通过调用DatabaseMetaData的各种方法,程序可以动态的了解一个数据库。由于这个类中的方法非常的多那么就介绍几个常用的方法来给大家参考。DatabaseMetaData实例的获取方法是,通过连接来获得的
-
Connectionconn=
-
-
DatabaseMetaDatadbmd=Conn.getMetaData();
创建了这个实例,就可以使用他的方法来获取数据库得信息。首先是数据库中用户标识符的信息的获得,主要使用如下的方法:
-
getDatabaseProductName()用以获得当前数据库是什么数据库。比如oracle,access等。返回的是字符串。
-
-
getDatabaseProductVersion()获得数据库的版本。返回的字符串。
-
-
getDriverVersion()获得驱动程序的版本。返回字符串。
-
-
supportsResultSetType(ResultSet.resultype)是判定是否支持这种结果集的类型。比如参数如果是Result.TYPE_FORWARD_ONLY,那就是判定是否支持,只能先前移动结果集的指针。返回值为boolean,true表示支持。
上面介绍的只是几个常用的方法,这个类中还有很多方法,可以到jdk的帮助文档中去查看类java.sql.DatabaseMetaData。这个类中还有一个比较常用的方法就是获得表的信息。使用的方法是:
-
getTables(Stringcatalog,Stringschema,StringtableName,String[]types),
-
-
这个方法带有四个参数,他们表示的含义如下:
-
-
Stringcatalog——要获得表所在的编目。串“”””意味着没有任何编目,Null表示所有编目。
-
-
Stringschema——要获得表所在的模式。串“”””意味着没有任何模式,Null表示所有模式。该参数可以包含单字符的通配符(“_”),也可以包含多字符的通配符(“%”)。
-
-
StringtableName——指出要返回表名与该参数匹配的那些表,该参数可以包含单字符的通配符(“_”),也可以包含多字符的通配符(“%”)。
-
-
-
Stringtypes——一个指出返回何种表的数组。可能的数组项是:”TABLE”,”VIEW”,
-
-
”SYSTEMTABLE”,”GLOBALTEMPORARY”,”LOCALTEMPORARY”,”ALIAS”,
-
-
“SYSNONYM”。
-
-
通过getTables()方法返回一个表的信息的结果集。这个结果集包括字段有:TABLE_CAT表所在的编目。TABLE_SCHEM表所在的模式,TABLE_NAME表的名称。TABLE_TYPE标的类型。REMARKS一段解释性的备注。通过这些字段可以完成表的信息的获取。
-
-
还有两个方法一个是获得列getColumns(Stringcatalog,Stringschama,Stringtablename,StringcolumnPattern)一个是获得关键字的方法getPrimaryKeys(Stringcatalog,Stringschema,Stringtable)这两个方法中的参数的含义和上面的介绍的是相同的。凡是pattern的都是可以用通配符匹配的。getColums()返回的是结果集,这个结果集包括了列的所有信息,类型,名称,可否为空等。getPrimaryKey()则是返回了某个表的关键字的结果集。
可以得到该库中"表"的所有情况,这里的表包括表,视图,系统表,临时空间,别名,同义词对于各参数:String catalog,表的目录,可能为null,"null"匹配所有String schemaPattern,表的大纲,同上String tableNamePattern,表名,同上String[] types,表的类型,"null"匹配所有,可用的类型为:TABLE,VIEW,SYSEM TABLE,GLOBAL TEMPORARY,LOCAL TEMPORARY,ALIAS,SYNONYM例如:
-
DatabaseMetaDatadbmd=conn.getMetaData();
-
ResultSetrs=dbmd.getTables(null,null,null,null);
-
ResultSetMetaDatarsmd=rs.getMetaData();
-
intj=rsmd.getColumnCount();
-
for(inti=1;i<=j;i++){
-
out.print(rsmd.getColumnLabel(i)+"\t");
-
}
-
out.println();
-
while(rs.next()){
-
for(inti=1;i<=j;i++){
-
out.print(rs.getString(i)+"\t");
-
}
-
out.println();
-
}
-
对于更详细的表中的列的信息,可以用dbmd(不是rsmd).getColumns(
-
Stringcatalog,
-
StringschemaPattern,
-
StringtableNamePattern,
-
StringcolumnNamePattern
-
)
不仅可以获得rsmd中的信息,还可以获得列的大小,小数位数,精度,缺省值,列在表中的位置等相关信息.还有两个方法,调用和获取表信息一样,可以获得存储过程和索引的信息:
-
ResultSetgetProcedures(
-
Stringcatalog,
-
StringschemaPattern,
-
StringprocedurePattern
-
);
-
ResultSetgetIndexINFO(
-
Stringcatalog,
-
StringschemaPattern,
-
Stringtable,
-
booleanunique,booleanapproximate
-
);
通过getTables(),getColumns(),getPrimaryKeys()就可以完成表的反向设计了。主要步骤如下:1、 通过getTables()获得数据库中表的信息。2、 对于每个表使用,getColumns(),getPrimaryKeys()获得相应的列名,类型,限制条件,关键字等。3、 通过1,2获得信息可以生成相应的建表的SQL语句。通过上述三步完成反向设计表的过程。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
ResultSet 转为listmap
java 使ResultSet转换List代码,绝对好用 方便类型转换 不促之处,请提意见
主要介绍了java中ResultSet遍历数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
JAVA 版本ResultSet 转换为JAVABEAN的工具类
绍Java中ResultSet转换为List的方法
ResultSet转List
ResultSet转化为json,json转化为List,轻松搞定
通过反射从数据库返回集合ResultSet中得到实体对象的list集合
ResultSet的用法
ResultSet直接在JTable显示
java数据库连接ResultSet
在 Oracle9i 之前,不可能从 Java 存储过程直接返回一个 ResultSet,因为没有定义表单 ResultSet->REF CURSOR 的映射。Oracle9i 增加了此映射,允许从函数返回 ResultSet 或将其作为 OUT 参数传到某个过程。但它仍不...
这是一个用来教你如何使用ResultSet 获取数据对象的文档,非常使用
获得结果集的字段名称,ResultSet的属性要调用ResultSetMetaData的方法
poi根据ResultSet到处Excle源码,包含项目所需jar包,可以直接运行
ResultSet rs = null; try { conn = getConn(); pstmt = conn.prepareStatement(sql); if(args!=null&&args.length>0){ for(int i = 0;i;i++){ pstmt.setObject(i+1, args[i]); } ...
次类对ResultSet进行封装,可以将其转化为List,Map,BO等
jsp 三种查询分页 resultset,hibernate ,存储过程jsp 三种查询分页 resultset,hibernate ,存储过程jsp 三种查询分页 resultset,hibernate ,存储过程jsp 三种查询分页 resultset,hibernate ,存储过程
Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData、查询结果集映射Map与ListMap 1.数据类型 2.封装通用增删改 2.1.封装JDBCUtil 2.2.封装Dao通用增删改 2.3.测试 3.ResultSet...
resultset 变成 XML 格式输出