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();
        }
    }
}

你可能感兴趣的:(sql,jdbc,Microsoft,Access,sun)