一种通过jdbc获取数据库结构的方法

本文参考了以下文章:

通过JDBC的DatabaseMetaData获取数据库元数据


JDBC的那点事之DatabaseMetaData之获取数据库所有表

注意:测试环境是mysql。


ok,上代码:

package EasisTools.Test;

import Easis.Common.StringUtil;
import Easis.DBUtility.MySQLHelper;
import Easis.util.DataColumn;
import Easis.util.DataRow;
import Easis.util.DataTable;
import Easis.util.DataTableHelper;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;


public class testMysqlMetaInfo {

    public static void main(String[] args){
        MySQLHelper myhelper=new MySQLHelper("jdbc:mysql://127.0.0.1:3306/easisshop","root","888888");
        System.out.println("开始执行:");
        Connection myconn=myhelper.getConnection();
        try{
            DatabaseMetaData dbMeta=myconn.getMetaData();
            /**
             * 获取数据库里面的表名称,返回的是resultset请自行处理。
             * 参数解释:
             第一个是数据库名称,对于MySQL,则对应相应的数据库,对于Oracle来说,则是对应相应的数据库实例,可以不填,也可以直接使用Connection的实例对象中的getCatalog()方法返回的值填充;
             第二个是模式,可以理解为数据库的登录名,而对于Oracle也可以理解成对该数据库操作的所有者的登录名。对于Oracle要特别注意,其登陆名必须是大写,不然的话是无法获取到相应的数据,而MySQL则不做强制要求。
             第三个是表名称,一般情况下如果要获取所有的表的话,可以直接设置为null,如果设置为特定的表名称,则返回该表的具体信息。
             第四个是类型标准,以数组形式传值,有"TABLE"、"VIEW"、"SYSTEM TABLE"、"GLOBAL TEMPORARY"、"LOCAL TEMPORARY"、"ALIAS" 和 "SYNONYM"这几个经典的类型,一般使用”TABLE”,即获取所有类型为TABLE的表
             它返回一个ResultSet对象,有10列,详细的显示了表的类型:
             TABLE_CAT String => 表类别(可为 null)
             TABLE_SCHEM String => 表模式(可为 null)
             TABLE_NAME String => 表名称
             TABLE_TYPE String => 表类型。
             REMARKS String => 表的解释性注释
             TYPE_CAT String => 类型的类别(可为 null)
             TYPE_SCHEM String => 类型模式(可为 null)
             TYPE_NAME String => 类型名称(可为 null)
             SELF_REFERENCING_COL_NAME String => 有类型表的指定 "identifier" 列的名称(可为 null)
             REF_GENERATION String
             可根据需要使用
             * */


                ResultSet rs_tableInfo= dbMeta.getTables(null,null,null,new String[]{"TABLE","VIEW"});
                DataTable dt_tables=DataTableHelper.rs2datatable(rs_tableInfo);
            System.out.println("开始解释所有表名称:");
            for (DataRow dr_proc: dt_tables.getRows()){
                System.out.println("参数序号:"+dr_proc.getRowNumber()+",相关参数如下:");
                for (DataColumn column1:dr_proc.getColumns()){
                    System.out.println(StringUtil.Lpad(column1.getColumnName(),' ',20)+":"+column1.getString());
                }
            }


                ResultSet rs_columnList=dbMeta.getColumns(null,"easisshop","Member",null);
            System.out.println("开始解释其中一个表的参数列表:");
            DataTable dt_paras=DataTableHelper.rs2datatable(rs_columnList);
            for (DataRow dr_proc: dt_paras.getRows()){
                System.out.print("参数序号:"+dr_proc.getRowNumber()+",相关参数如下:");
                for (DataColumn column1:dr_proc.getColumns()){
                    System.out.println(StringUtil.Lpad(column1.getColumnName(),' ',20)+":"+column1.getString());
                }
            }



          //  DatabaseMetaData metaData = conn.getMetaData();
           // ResultSet rs = metaData.getTables(conn.getCatalog(), "root", null, new String[]{"TABLE"});
            ResultSet rs=rs_tableInfo;
            while(rs.next()) {
                System.out.println(rs.getString("TABLE_NAME"));
            }
            rs_tableInfo.close();

            rs=rs_columnList;
            System.out.println("开始获取表里面的参数:");
            while(rs.next()) {
                System.out.println(

                        "【字段名称:】"+rs.getString("COLUMN_NAME")+ //字段名称
                        "【字段数据类型:】"+rs.getString("DATA_TYPE")+//字段数据类型(对应java.sql.Types中的常量)
                        "【数据库类型:】"+rs.getString("TYPE_NAME")//字段类型名称(例如:VACHAR2)

                );
            }
            rs_columnList.close();
            if(1==1){
                return;
            }
                  /*
            ResultSet rs= dbMeta.getProcedures(null, "dbo", "proc_paras_test");
            DataTable dataTable= DataTableHelper.rs2datatable(rs);
            rs.close();

            ResultSet rs_columns=  dbMeta.getProcedureColumns(null,"dbo","proc_paras_test",null);
            DataTable dt_columns=DataTableHelper.rs2datatable(rs_columns);
            rs_columns.close();
            //--将相关信息打印出来

            for (DataRow dr_proc: dataTable.getRows()){
                System.out.print("参数序号:"+dr_proc.getRowNumber()+",相关参数如下:");
                for (DataColumn column1:dr_proc.getColumns()){
                    System.out.println(StringUtil.Lpad(column1.getColumnName(),' ',20)+":"+column1.getString());
                }

            }

            System.out.println("===================下面是表的相关参数======================");

            for (DataRow drow2:dt_columns.getRows()){
                System.out.println("【参数序号:"+drow2.getRowNumber()+"】");
                for (DataColumn col2:drow2.getColumns()){
                    System.out.println(StringUtil.Lpad(col2.getColumnName(),' ',20)+":"+col2.getString());
                }
            }


            Object ob3="";    */

        }
        catch (Exception e){
            e.printStackTrace();
        }
    }
}




结果如下:

开始执行:
开始解释所有表名称:
参数序号:0,相关参数如下:
TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :china
TABLE_TYPE          :TABLE
REMARKS             :
TYPE_CAT            :
TYPE_SCHEM          :
TYPE_NAME           :
SELF_REFERENCING_COL_NAME:
REF_GENERATION      :
参数序号:1,相关参数如下:
TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
TABLE_TYPE          :TABLE
REMARKS             :
TYPE_CAT            :
TYPE_SCHEM          :
TYPE_NAME           :
SELF_REFERENCING_COL_NAME:
REF_GENERATION      :
开始解释其中一个表的参数列表:
参数序号:0,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :id
DATA_TYPE           :4
TYPE_NAME           :INT
COLUMN_SIZE         :10
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :0
NUM_PREC_RADIX      :10
NULLABLE            :0
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :1
IS_NULLABLE         :NO
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :YES
IS_GENERATEDCOLUMN  :
参数序号:1,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :name
DATA_TYPE           :12
TYPE_NAME           :VARCHAR
COLUMN_SIZE         :200
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :0
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :200
ORDINAL_POSITION    :2
IS_NULLABLE         :NO
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:2,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :pwd
DATA_TYPE           :12
TYPE_NAME           :VARCHAR
COLUMN_SIZE         :200
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :0
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :200
ORDINAL_POSITION    :3
IS_NULLABLE         :NO
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:3,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :email
DATA_TYPE           :12
TYPE_NAME           :VARCHAR
COLUMN_SIZE         :200
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :0
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :200
ORDINAL_POSITION    :4
IS_NULLABLE         :NO
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:4,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :regTime
DATA_TYPE           :93
TYPE_NAME           :DATETIME
COLUMN_SIZE         :19
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :0
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :5
IS_NULLABLE         :NO
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:5,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :lastLoginTime
DATA_TYPE           :93
TYPE_NAME           :DATETIME
COLUMN_SIZE         :19
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :6
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:6,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :lastLoginIP
DATA_TYPE           :12
TYPE_NAME           :VARCHAR
COLUMN_SIZE         :20
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :20
ORDINAL_POSITION    :7
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:7,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :isLock
DATA_TYPE           :-7
TYPE_NAME           :BIT
COLUMN_SIZE         :
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :8
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:8,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :isActive
DATA_TYPE           :-7
TYPE_NAME           :BIT
COLUMN_SIZE         :
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :9
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:9,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :activeCode
DATA_TYPE           :12
TYPE_NAME           :VARCHAR
COLUMN_SIZE         :50
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :50
ORDINAL_POSITION    :10
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:10,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :activeBeginTime
DATA_TYPE           :93
TYPE_NAME           :DATETIME
COLUMN_SIZE         :19
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :11
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:11,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :activeEndTime
DATA_TYPE           :93
TYPE_NAME           :DATETIME
COLUMN_SIZE         :19
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :12
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:12,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :loginFailedTimes
DATA_TYPE           :-6
TYPE_NAME           :TINYINT
COLUMN_SIZE         :3
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :0
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :13
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:13,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :lastLoginFailedTime
DATA_TYPE           :93
TYPE_NAME           :DATETIME
COLUMN_SIZE         :19
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :14
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:14,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :loginLimitation
DATA_TYPE           :-7
TYPE_NAME           :BIT
COLUMN_SIZE         :
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :15
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:15,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :loginLimitBeginTime
DATA_TYPE           :93
TYPE_NAME           :DATETIME
COLUMN_SIZE         :19
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :16
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:16,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :loginLimitEndTime
DATA_TYPE           :93
TYPE_NAME           :DATETIME
COLUMN_SIZE         :19
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :17
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:17,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :realName
DATA_TYPE           :12
TYPE_NAME           :VARCHAR
COLUMN_SIZE         :20
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :20
ORDINAL_POSITION    :18
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:18,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :idcard
DATA_TYPE           :12
TYPE_NAME           :VARCHAR
COLUMN_SIZE         :40
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :40
ORDINAL_POSITION    :19
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:19,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :Mobile
DATA_TYPE           :12
TYPE_NAME           :VARCHAR
COLUMN_SIZE         :20
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :20
ORDINAL_POSITION    :20
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:20,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :Telephone
DATA_TYPE           :12
TYPE_NAME           :VARCHAR
COLUMN_SIZE         :20
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :20
ORDINAL_POSITION    :21
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:21,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :birthday
DATA_TYPE           :93
TYPE_NAME           :DATETIME
COLUMN_SIZE         :19
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :22
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:22,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :hometown
DATA_TYPE           :12
TYPE_NAME           :VARCHAR
COLUMN_SIZE         :100
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :100
ORDINAL_POSITION    :23
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:23,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :remark
DATA_TYPE           :12
TYPE_NAME           :VARCHAR
COLUMN_SIZE         :100
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :100
ORDINAL_POSITION    :24
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:24,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :hasHeadPhoto
DATA_TYPE           :-7
TYPE_NAME           :BIT
COLUMN_SIZE         :
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :25
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
参数序号:25,相关参数如下:TABLE_CAT           :easisshop
TABLE_SCHEM         :
TABLE_NAME          :member
COLUMN_NAME         :headPhotoPath
DATA_TYPE           :12
TYPE_NAME           :VARCHAR
COLUMN_SIZE         :100
BUFFER_LENGTH       :65535
DECIMAL_DIGITS      :
NUM_PREC_RADIX      :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :0
SQL_DATETIME_SUB    :0
CHAR_OCTET_LENGTH   :100
ORDINAL_POSITION    :26
IS_NULLABLE         :YES
SCOPE_CATALOG       :
SCOPE_SCHEMA        :
SCOPE_TABLE         :
SOURCE_DATA_TYPE    :
IS_AUTOINCREMENT    :NO
IS_GENERATEDCOLUMN  :
开始获取表里面的参数:



想必大家已经知道如何处理了吧?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java高级程序设计 第8章 Java数据库编程 8.1 应用场景 8.2 相关知识8.3 实施过程 8.4 拓展知识8.5 拓展训练 8.6 课后小结8.7 课后习题 8.8 课堂实训 Java高级程序设计实战教程第八章-Java数据库编程全文共12页,当前为第1页。 8.1 应用场景 大多数软件系统都需要处理非常庞大的数据,这些数据并不是使用数据或集合就能解决的,这时就需要借助数据库系统。数据库系统由数据库数据库管理系统、应用系统和数据库管理员组成。数据库管理系统简称DBMS。目前有许多DBMS产品,如DB2、Oracle、Microsoft SQL Server 、Sybase、Informix、MySQL等,Java程序需要访问这些数据库,并对数据进行处理。 Java高级程序设计实战教程第八章-Java数据库编程全文共12页,当前为第2页。 8.2 相关知识 8.2.1 数据库访问技术简介 8.2.2 JDBC连接数据库 8.3.3 执行SQL操作 Java高级程序设计实战教程第八章-Java数据库编程全文共12页,当前为第3页。 8.2.1 数据库访问技术简介 数据库中的数据存放在数据库文件中,我们要从数据库文件中获取数据,先要连接并登陆到存放数据库的服务器。一般来说,访问数据库中的数据有两种方式: 一是通过DBMS(Data Base Management System,数据库管理系统)提供的数据库操作工具来访问,如通过SQL Server 2000的查询设计器来提交查询,或者通过SQL Server 2000的企业管理工具来访问。这种方式比较适合DBA对数据库进行管理; 二是通过API(Application Programming Interface, 应用编程接口)来访问数据库,这种方式适合在应用程序中访问数据库。 在数据库发展的初期,各个开发商为自己的数据库设计了各自不同的DBMS,因此不同类型的数据库之间数据交换非常困难。为了解决这个问题,Microsoft提出了ODBC(Open Data Base Connectivity,开放数据库互连)技术,试图建立一种统一的应用程序访问数据库接口,使开发人员无需了解程序内部结构就可以访问数据库JDBC(Java Data Base Connectivity,Jjava数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 JDBC并不能直接访问数据库,需要借助于数据库厂商提供的JDBC驱动程序。 JDBC中常用的类和接口可用于我们编程开发,利用这些类和接口可以方便的经行数据访问和处理。这些类和接口都位于java.sal包中。 Java高级程序设计实战教程第八章-Java数据库编程全文共12页,当前为第4页。 8.2.2 JDBC连接数据库 JDBC简介 之前我们介绍的数据库访问技术都是Microsoft提出的,主要用于Windows平台上Microsoft开发环境下的数据库连接和操作。而JDBC(Java Data Base Connectivity,Java数据库连接)是Java语言中用来规范客户端程序如何让来访问数据库的应用程序接口。 JDBC一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC保留ODBC的基本设计功能,在Web和Internet应用程序中的作用于ODBC在Windows系列平台应用程序中的作用类似,而且还具有对硬件平台、操作系统异构性的支持。 Java高级程序设计实战教程第八章-Java数据库编程全文共12页,当前为第5页。 8.3.3 执行SQL操作 JDBC访问数据库 访问数据库就是从数据库中提取数据或向数据库中保存数据,JDBC抽象了数据库进行交互的过程。首先在Java程序中要import java sql.* 语句导入java.sql包。当Java程序需要使用JDBC时,创建一个java.sql.connection对象指向数据库。其次,要创建一个最基本的类是java.sql.statement,用于执行数据库操作。 (1)加载连接数据库的驱动程序 (2)建立连接 (3)查询数据库 (4)处理结果集 (5)关闭查询语句及数据库连接 Java高级程序设计实战教程第八章-Java数据库编程全文共12页,当前为第6页。 8.3 任务实施 任务一 编写程序实现对图书信息表的增删改查操作 任务需求: 现有图书信息表bookinfo(序号,图书编号,图书名称,作者,出版社,单价,出版日期,I
1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. 映射Person类 1.3.2. 单向Set-based的关联 1.3.3. 使关联工作 1.3.4. 值类型的集合 1.3.5. 双向关联 1.3.6. 使双向连起来 1.4. 第三部分 - EventManager web应用程序 1.4.1. 编写基本的servlet 1.4.2. 处理与渲染 1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得SessionFactory 3.3. JDBC连接 3.4. 可选的配置属性 3.4.1. SQL方言 3.4.2. 外连接抓取(Outer Join Fetching) 3.4.3. 二进制流 (Binary Streams) 3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 3.8.2. JNDI绑定的SessionFactory 3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法(constructor) 4.1.2. 提供一个标识属性(identifier property)(可选) 4.1.3. 使用非final的类 (可选) 4.1.4. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选) 4.2. 实现继承(Inheritance) 4.3. 实现equals()和hashCode() 4.4. 动态模型(Dynamic models) 4.5. 元组片断映射(Tuplizers) 5. 对象/关系数据库映射基础(Basic O/R Mapping) 5.1. 映射定义(Mapping declaration) 5.1.1. Doctype 5.1.2. hibernate-mapping 5.1.3. class 5.1.4. id 5.1.4.1. Generator 5.1.4.2. 高/低位算法(Hi/Lo Algorithm) 5.1.4.3. UUID算法(UUID Algorithm ) 5.1.4.4. 标识字段和序列(Identity columns and Sequences) 5.1.4.5. 程序分配的标识符(Assigned Identifiers) 5.1.4.6. 触发器实现的主键生成器(Primary keys assigned by triggers) 5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 自然ID(natural-id) 5.1.13. 组件(component), 动态组件(dynamic-component) 5.1.14. properties 5.1.15. 子类(subclass) 5.1.16. 连接的子类(joined-subclass) 5.1.17. 联合子类(union-subclass) 5.1.18. 连接(join) 5.1.19. 键(key) 5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. 多次映射同一个类 5.4. SQL中引号包围的标识符 5.5. 其他元数据(Metadata) 5.5.1. 使用 XDoclet 标记 5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库对象(Auxiliary Database Objects) 6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. 索引集合类(Indexed collections) 6.2.4. 值集合于多对多关联(Collections of values and many-to-many associations) 6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及有序集合类 6.3.4. 三重关联(Ternary associations) 6.3.5. 使用<idbag> 6.4. 集合例子(Collection example) 7. 关联关系映射 7.1. 介绍 7.2. 单向关联(Unidirectional associations) 7.2.1. 多对一(many to one) 7.2.2. 一对一(one to one) 7.2.3. 一对多(one to many) 7.3. 使用连接表的单向关联(Unidirectional associations with join tables) 7.3.1. 一对多(one to many) 7.3.2. 多对一(many to one) 7.3.3. 一对一(one to one) 7.3.4. 多对多(many to many) 7.4. 双向关联(Bidirectional associations) 7.4.1. 一对多(one to many) / 多对一(many to one) 7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) 8.2. 在集合中出现的依赖对象 (Collections of dependent objects) 8.3. 组件作为Map的索引(Components as Map indices ) 8.4. 组件作为联合标识符(Components as composite identifiers) 8.5. 动态组件 (Dynamic components) 9. 继承映射(Inheritance Mappings) 9.1. 三种策略 9.1.1. 每个类分层结构一张表(Table per class hierarchy) 9.1.2. 每个子类一张表(Table per subclass) 9.1.3. 每个子类一张表(Table per subclass),使用辨别标志(Discriminator) 9.1.4. 混合使用“每个类分层结构一张表”和“每个子类一张表” 9.1.5. 每个具体类一张表(Table per concrete class) 9.1.6. Table per concrete class, using implicit polymorphism 9.1.7. 隐式多态和其他继承映射混合使用 9.2. 限制 10. 与对象共事 10.1. Hibernate对象状态(object states) 10.2. 使对象持久化 10.3. 装载对象 10.4. 查询 10.4.1. 执行查询 10.4.1.1. 迭代式获取结果(Iterating results) 10.4.1.2. 返回元组(tuples)的查询 10.4.1.3. 标量(Scalar)结果 10.4.1.4. 绑定参数 10.4.1.5. 分页 10.4.1.6. 可滚动遍历(Scrollable iteration) 10.4.1.7. 外置命名查询(Externalizing named queries) 10.4.2. 过滤集合 10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作单元(Unit of work) 11.1.2. 长对话 11.1.3. 关注对象标识(Considering object identity) 11.1.4. 常见问题 11.2. 数据库事务声明 11.2.1. 非托管环境 11.2.2. 使用JTA 11.2.3. 异常处理 11.2.4. 事务超时 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查(Application version checking) 11.3.2. 扩展周期的session和自动版本化 11.3.3. 脱管对象(deatched object)和自动版本化 11.3.4. 定制自动版本化行为 11.4. 悲观锁定(Pessimistic Locking) 11.5. 连接释放模式(Connection Release Modes) 12. 拦截器与事件(Interceptors and events) 12.1. 拦截器(Interceptors) 12.2. 事件系统(Event system) 12.3. Hibernate的声明式安全机制 13. 批量处理(Batch processing) 13.1. 批量插入(Batch inserts) 13.2. 批量更新(Batch updates) 13.3. StatelessSession (无状态session)接口 13.4. DML(数据操作语言)风格的操作(DML-style operations) 14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9. 表达式 14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集内容 15.3. 结果集排序 15.4. 关联 15.5. 动态关联抓取 15.6. 查询示例 15.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.2. 别名和属性引用 16.3. 命名SQL查询 16.3.1. 使用return-property来明确地指定字段/别名 16.3.2. 使用存储过程来查询 16.3.2.1. 使用存储过程的规则和限制 16.4. 定制SQL用来create,update和delete 16.5. 定制装载SQL 17. 过滤数据 17.1. Hibernate 过滤器(filters) 18. XML映射 18.1. 用XML数据进行工作 18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching strategies) 19.1.1. 操作延迟加载的关联 19.1.2. 调整抓取策略(Tuning fetch strategies) 19.1.3. 单端关联代理(Single-ended association proxies) 19.1.4. 实例化集合和代理(Initializing collections and proxies) 19.1.5. 使用批量抓取(Using batch fetching) 19.1.6. 使用子查询抓取(Using subselect fetching) 19.1.7. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读缓存(Strategy: read only) 19.2.3. 策略:读/写缓存(Strategy: read/write) 19.2.4. 策略:非严格读/写缓存(Strategy: nonstrict read/write) 19.2.5. 策略:事务缓存(transactional) 19.3. 管理缓存(Managing the caches) 19.4. 查询缓存(The Query Cache) 19.5. 理解集合性能(Understanding Collection performance) 19.5.1. 分类(Taxonomy) 19.5.2. Lists, maps 和sets用于更新效率最高 19.5.3. Bag和list是反向集合类中效率最高的 19.5.4. 一次性删除(One shot delete) 19.6. 监测性能(Monitoring performance) 19.6.1. 监测SessionFactory 19.6.2. 数据记录(Metrics) 20. 工具箱指南 20.1. Schema自动生成(Automatic schema generation) 20.1.1. 对schema定制化(Customizing the schema) 20.1.2. 运行该工具 20.1.3. 属性(Properties) 20.1.4. 使用Ant(Using Ant) 20.1.5. 对schema的增量更新(Incremental schema updates) 20.1.6. 用Ant来增量更新schema(Using Ant for incremental schema updates) 20.1.7. Schema 校验 20.1.8. 使用Ant进行schema校验 21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 23.4.1. "Typed" one-to-one association 23.4.2. Composite key example 23.4.3. 共有组合键属性的多对多(Many-to-many with shared composite key attribute) 23.4.4. Content based discrimination 23.4.5. Associations on alternate keys

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值