jdbc resultsetMeteData 学习

应需要对JDBC对数据库的元数据的操作学习了一下。

对JDBC来说元数据有两种

1:针对数据库的元数据。

2:针对一个ResultSet的元数据。

分别对这两种做介绍。

一:针对数据库的元数据。JDBC是通过一个Connection.getMeteData()来取得一个DataBaseMeteData类型的数据。DataBaseMeteData有很多方法可以用来获取这个Connection所连接的数据库的信息。具体的主要函数如下

getCatalogs();

返回数据库的目录信息。

getURL();

获取连接的数据库的URL地址。

getDriverName();

获取连接的数据库的驱动程序。

getColumns(catalog, schema, tableNames,columnNames)

返回指定表名的表的所有列名。

catalog, schema通常为NULL。

getTables(catalog, schema, tablemask, types[]);

返回符合条件的表的描述。其参数含义如下∶

catalog 表所在的目录。对于JDBC-ODBC数据库,可置为NULL。这个所谓的目录实际上就是数据库所在文件系统的绝对路径。

schema 数据库的数据模式,通常置为NULL。

tablemask 对要获取的表的描述。如果要取得所有表名。可使用通配符“%”。

types[] 这是一个字符串数组,描述要获取的表的类型。因为大型数据库中通常含有许多内部表,与用户无关。如果它为NULL,将得到所有的表。如果是一个单元素的数组含有字符串"TABLES",只得到与用户有关的表。

二:针对ResultSet的元数据。JDBC是通过一个ResultSet.getResultSetMeteData()来取得一个ResultSetMeteData类型的数据。ResultsetMeteData有很多方法可以用来获取这个ResultSet所包含的查询的信息。具体的主要函数如下:

getColumnCount();

返回结果集中记录的列数。

getColumnName(int);

返回指定号数的字段名。

getColumnType(int);

返回指定号数的字段类型。

三:测试程序

import java.sql.*;

public class Conn
{

private String driver;
private String uri;
private String uid;
private String pass;
private String path;
private Connection conn;
private Statement stmt;
private ResultSet rs;

public Conn(String s)
{
driver = "sun.jdbc.odbc.JdbcOdbcDriver";
uri = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};dbq=";
uid = "";
pass = "";
path = "";
conn = null;
stmt = null;
rs = null;
path = s;
uri = uri + path;
}

public Conn(String s, String s1, String s2)
{
driver = "sun.jdbc.odbc.JdbcOdbcDriver";
uri = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};dbq=";
uid = "";
pass = "";
path = "";
conn = null;
stmt = null;
rs = null;
path = s;
uid = s1;
pass = s2;
uri = uri + s;
}

public Connection getConn()
{
if(conn == null)
try
{
Class.forName(driver);
conn = DriverManager.getConnection(uri, uid, pass);
}
catch(Exception exception)
{
System.out.println(exception);
}
return conn;
}

public Statement getStmt()
{
try
{
if(stmt != null)
stmt.close();
conn = getConn();
stmt = conn.createStatement();
}
catch(Exception exception)
{
System.out.println(exception);
}
return stmt;
}

public ResultSet getResultSet(String s)
{
try
{
if(rs != null)
rs.close();
conn = getConn();
stmt = conn.createStatement();
rs = stmt.executeQuery(s);
}
catch(Exception exception)
{
System.out.println(exception);
}
return rs;
}

public void executeSql(String s)
{
try
{
conn = getConn();
stmt = conn.createStatement();
stmt.executeUpdate(s);
stmt.close();
}
catch(Exception exception)
{
System.out.println(exception);
}
}

public void close()
{
try
{
if(rs != null)
rs.close();
if(stmt != null)
stmt.close();
if(conn != null)
conn.close();
}
catch(Exception exception)
{
System.out.println(exception);
}
}

public static void main(String args[])
{
Conn conn = new Conn("E:\\sms.mdb", " ", "access");

try
{
ResultSet rs = null;
DatabaseMetaData databasemd = null;
ResultSetMetaData rsmd = null;
String [] type = new String[1];
type[0] = "TABLES";
databasemd = conn.getConn().getMetaData();
System.out.println("---------------------输出数据库的表信息-------------");
rs = databasemd.getTables(null,null,"inbox7",null);
// rs = databasemd.getColumns(null,null,"%","%");
if (rs == null) {
System.out.println("the databasemete is null!");
}
String table_name = "";
while(rs.next())
{
table_name = rs.getString("TABLE_NAME");
if(table_name.indexOf("MS") == -1)
{
System.out.println(table_name);
}
}
rs.close();
System.out.println("---------------------输出具体表信息---------------");
String sql = "select * from "+table_name;

rs = conn.getResultSet(sql);
while(rs.next())
{
System.out.println(rs.getString(3));
}

}
catch(Exception exception)
{
System.out.print(exception);
}
finally
{
conn.close();
}
}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值