【java工具】使用jdbc访问数据库获取某个存储过程信息及下面参数信息

首先,我们先写一个包含了最经常使用的参数的存储过程,然后利用jdbc获得该存储过程的信息及它对应所有参数的信息及内容。

【该测试针对的是sqlserver2005.】

 

【测试用存储过程如何:请自行运行】

 

 

CREATE PROCEDURE proc_paras_test
@testBITINT BIGINT =0,
@testBINARY BINARY,
@test1BIT BIT ,
@testCHAR CHAR,
@testDATETIME DATETIME,
@testDECIMAL DECIMAL,
@testFLOAT FLOAT,
@testINT INT,
@testMONEY MONEY,
@testNCHAR NCHAR,
@testNTEXT NTEXT,
@testNUMBERIC NUMERIC,
@testNVARCHAR NVARCHAR,
@testREAL REAL,
@testSMALLDATETIME SMALLDATETIME,
@testSMALLINT SMALLINT,
@testSMALLMONEY SMALLMONEY,
@testTINYINT TINYINT,
@testXML XML,
@testVARCHAR VARCHAR(200),
@testOUTPUT_INT INT OUTPUT ,
@testOUTPUT_BIT BIT OUTPUT,
@testOUTPUT_NVARCHAR NVARCHAR(200) OUTPUT
AS
BEGIN
	SELECT 'ok';
END

 

【程序编写】

 

下面将编写程序从Connection对象里面获取DataBaseMetaData ,从中获得我们需要的存储过程信息及对应参数,为了以后可以对照着来写代码生成器,我特意将所有常用的参数都加进去存储过程了,并且我也在程序里显示出从数据库里面获得的所有信息,

 

 

package TestCase;

import EWeb.DB.DBConnection;
import Easis.Common.StringUtil;
import Easis.DBUtility.DataColumn;
import Easis.DBUtility.DataTable;
import Easis.DBUtility.DataTableHelper;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import Easis.DBUtility.DataRow;

public class testDataBaseMetaInfo {

    public static void main(String[] args){
        Connection myconn= DBConnection.getConnection();
        try{
            DatabaseMetaData dbMeta=myconn.getMetaData();
            Object ob2=dbMeta;
            String procTerm= dbMeta.getProcedureTerm();
            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,相关参数如下:PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
NUM_INPUT_PARAMS    :-1
NUM_OUTPUT_PARAMS   :-1
NUM_RESULT_SETS     :-1
REMARKS             :
PROCEDURE_TYPE      :2
===================下面是相关存储过程的相关参数======================
【参数序号:0】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@RETURN_VALUE
COLUMN_TYPE         :5
DATA_TYPE           :4
TYPE_NAME           :int
PRECISION           :10
LENGTH              :4
SCALE               :0
RADIX               :10
NULLABLE            :0
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :4
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :0
IS_NULLABLE         :NO
SS_DATA_TYPE        :56
【参数序号:1】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testBITINT
COLUMN_TYPE         :1
DATA_TYPE           :-5
TYPE_NAME           :bigint
PRECISION           :19
LENGTH              :8
SCALE               :0
RADIX               :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :-5
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :1
IS_NULLABLE         :YES
SS_DATA_TYPE        :108
【参数序号:2】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testBINARY
COLUMN_TYPE         :1
DATA_TYPE           :-2
TYPE_NAME           :binary
PRECISION           :1
LENGTH              :1
SCALE               :
RADIX               :
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :-2
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :1
ORDINAL_POSITION    :2
IS_NULLABLE         :YES
SS_DATA_TYPE        :37
【参数序号:3】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@test1BIT
COLUMN_TYPE         :1
DATA_TYPE           :-7
TYPE_NAME           :bit
PRECISION           :1
LENGTH              :1
SCALE               :
RADIX               :
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :-7
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :3
IS_NULLABLE         :YES
SS_DATA_TYPE        :50
【参数序号:4】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testCHAR
COLUMN_TYPE         :1
DATA_TYPE           :1
TYPE_NAME           :char
PRECISION           :1
LENGTH              :1
SCALE               :
RADIX               :
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :1
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :1
ORDINAL_POSITION    :4
IS_NULLABLE         :YES
SS_DATA_TYPE        :39
【参数序号:5】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testDATETIME
COLUMN_TYPE         :1
DATA_TYPE           :93
TYPE_NAME           :datetime
PRECISION           :23
LENGTH              :16
SCALE               :3
RADIX               :
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :9
SQL_DATETIME_SUB    :3
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :5
IS_NULLABLE         :YES
SS_DATA_TYPE        :111
【参数序号:6】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testDECIMAL
COLUMN_TYPE         :1
DATA_TYPE           :3
TYPE_NAME           :decimal
PRECISION           :18
LENGTH              :20
SCALE               :0
RADIX               :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :3
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :6
IS_NULLABLE         :YES
SS_DATA_TYPE        :106
【参数序号:7】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testFLOAT
COLUMN_TYPE         :1
DATA_TYPE           :8
TYPE_NAME           :float
PRECISION           :53
LENGTH              :8
SCALE               :
RADIX               :2
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :6
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :7
IS_NULLABLE         :YES
SS_DATA_TYPE        :109
【参数序号:8】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testINT
COLUMN_TYPE         :1
DATA_TYPE           :4
TYPE_NAME           :int
PRECISION           :10
LENGTH              :4
SCALE               :0
RADIX               :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :4
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :8
IS_NULLABLE         :YES
SS_DATA_TYPE        :38
【参数序号:9】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testMONEY
COLUMN_TYPE         :1
DATA_TYPE           :3
TYPE_NAME           :money
PRECISION           :19
LENGTH              :21
SCALE               :4
RADIX               :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :3
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :9
IS_NULLABLE         :YES
SS_DATA_TYPE        :110
【参数序号:10】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testNCHAR
COLUMN_TYPE         :1
DATA_TYPE           :-15
TYPE_NAME           :nchar
PRECISION           :1
LENGTH              :2
SCALE               :
RADIX               :
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :-8
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :2
ORDINAL_POSITION    :10
IS_NULLABLE         :YES
SS_DATA_TYPE        :39
【参数序号:11】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testNTEXT
COLUMN_TYPE         :1
DATA_TYPE           :-16
TYPE_NAME           :ntext
PRECISION           :1073741823
LENGTH              :2147483646
SCALE               :
RADIX               :
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :-10
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :2147483646
ORDINAL_POSITION    :11
IS_NULLABLE         :YES
SS_DATA_TYPE        :35
【参数序号:12】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testNUMBERIC
COLUMN_TYPE         :1
DATA_TYPE           :2
TYPE_NAME           :numeric
PRECISION           :18
LENGTH              :20
SCALE               :0
RADIX               :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :2
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :12
IS_NULLABLE         :YES
SS_DATA_TYPE        :108
【参数序号:13】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testNVARCHAR
COLUMN_TYPE         :1
DATA_TYPE           :-9
TYPE_NAME           :nvarchar
PRECISION           :1
LENGTH              :2
SCALE               :
RADIX               :
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :-9
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :2
ORDINAL_POSITION    :13
IS_NULLABLE         :YES
SS_DATA_TYPE        :39
【参数序号:14】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testREAL
COLUMN_TYPE         :1
DATA_TYPE           :7
TYPE_NAME           :real
PRECISION           :24
LENGTH              :4
SCALE               :
RADIX               :2
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :7
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :14
IS_NULLABLE         :YES
SS_DATA_TYPE        :109
【参数序号:15】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testSMALLDATETIME
COLUMN_TYPE         :1
DATA_TYPE           :93
TYPE_NAME           :smalldatetime
PRECISION           :16
LENGTH              :16
SCALE               :0
RADIX               :
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :9
SQL_DATETIME_SUB    :3
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :15
IS_NULLABLE         :YES
SS_DATA_TYPE        :111
【参数序号:16】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testSMALLINT
COLUMN_TYPE         :1
DATA_TYPE           :5
TYPE_NAME           :smallint
PRECISION           :5
LENGTH              :2
SCALE               :0
RADIX               :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :5
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :16
IS_NULLABLE         :YES
SS_DATA_TYPE        :38
【参数序号:17】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testSMALLMONEY
COLUMN_TYPE         :1
DATA_TYPE           :3
TYPE_NAME           :smallmoney
PRECISION           :10
LENGTH              :12
SCALE               :4
RADIX               :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :3
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :17
IS_NULLABLE         :YES
SS_DATA_TYPE        :110
【参数序号:18】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testTINYINT
COLUMN_TYPE         :1
DATA_TYPE           :-6
TYPE_NAME           :tinyint
PRECISION           :3
LENGTH              :1
SCALE               :0
RADIX               :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :-6
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :18
IS_NULLABLE         :YES
SS_DATA_TYPE        :38
【参数序号:19】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testXML
COLUMN_TYPE         :1
DATA_TYPE           :-16
TYPE_NAME           :xml
PRECISION           :1073741823
LENGTH              :2147483646
SCALE               :
RADIX               :
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :-10
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :2147483646
ORDINAL_POSITION    :19
IS_NULLABLE         :YES
SS_DATA_TYPE        :0
【参数序号:20】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testVARCHAR
COLUMN_TYPE         :1
DATA_TYPE           :12
TYPE_NAME           :varchar
PRECISION           :200
LENGTH              :200
SCALE               :
RADIX               :
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :12
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :200
ORDINAL_POSITION    :20
IS_NULLABLE         :YES
SS_DATA_TYPE        :39
【参数序号:21】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testOUTPUT_INT
COLUMN_TYPE         :2
DATA_TYPE           :4
TYPE_NAME           :int
PRECISION           :10
LENGTH              :4
SCALE               :0
RADIX               :10
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :4
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :21
IS_NULLABLE         :YES
SS_DATA_TYPE        :38
【参数序号:22】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testOUTPUT_BIT
COLUMN_TYPE         :2
DATA_TYPE           :-7
TYPE_NAME           :bit
PRECISION           :1
LENGTH              :1
SCALE               :
RADIX               :
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :-7
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :
ORDINAL_POSITION    :22
IS_NULLABLE         :YES
SS_DATA_TYPE        :50
【参数序号:23】
PROCEDURE_CAT       :JWebBase
PROCEDURE_SCHEM     :dbo
PROCEDURE_NAME      :proc_paras_test;1
COLUMN_NAME         :@testOUTPUT_NVARCHAR
COLUMN_TYPE         :2
DATA_TYPE           :-9
TYPE_NAME           :nvarchar
PRECISION           :200
LENGTH              :400
SCALE               :
RADIX               :
NULLABLE            :1
REMARKS             :
COLUMN_DEF          :
SQL_DATA_TYPE       :-9
SQL_DATETIME_SUB    :
CHAR_OCTET_LENGTH   :400
ORDINAL_POSITION    :23
IS_NULLABLE         :YES
SS_DATA_TYPE        :39


参数很长吧?里面很多东西用不到的,现在我们简化一下,来看看哪些地方是将来要用到的。

 

 

【改写一下方法获取简洁的结果】

 

package TestCase;

import EWeb.DB.DBConnection;
import Easis.Common.StringUtil;
import Easis.DBUtility.DataColumn;
import Easis.DBUtility.DataTable;
import Easis.DBUtility.DataTableHelper;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import Easis.DBUtility.DataRow;

public class testDataBaseMetaInfo {

    public static void main(String[] args){
        Connection myconn= DBConnection.getConnection();
        try{
            DatabaseMetaData dbMeta=myconn.getMetaData();
            Object ob2=dbMeta;
            String procTerm= dbMeta.getProcedureTerm();
            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());
                }
            }

            System.out.println("===================存储过程简化的参数======================");
            for (DataRow drow23:dt_columns.getRows()){
            String str_res="参数:【"+StringUtil.Lpad(drow23.get("COLUMN_NAME").toString(),' ',25)+"】,架构:"+drow23.get("PROCEDURE_SCHEM")+","+
                    "参数类型:【"+StringUtil.Lpad(drow23.get("TYPE_NAME").toString(),' ',14)
                    +"】,长度:【"+StringUtil.Lpad(drow23.get("LENGTH").toString(),' ',10)+"】,"+
                    "方向:【"+StringUtil.Lpad(drow23.get("COLUMN_TYPE").toString(),' ',2)+"】,"+
                    "允许空:【"+StringUtil.Lpad(drow23.get("IS_NULLABLE").toString(),' ',4)+"】,"
                    +"所属proc:【"+StringUtil.Lpad(drow23.get("PROCEDURE_NAME").toString(),' ',10)+"】";
                System.out.println(str_res);
            }


            Object ob3="";

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

 

 

 

 

 

【运行,结果如下:(只列出需要看到的参数)】

 

参数:【@RETURN_VALUE            】,架构:dbo,参数类型:【int           】,长度:【4         】,方向:【5 】,允许空:【NO  】,所属proc:【proc_paras_test;1】
参数:【@testBITINT              】,架构:dbo,参数类型:【bigint        】,长度:【8         】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testBINARY              】,架构:dbo,参数类型:【binary        】,长度:【1         】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@test1BIT                】,架构:dbo,参数类型:【bit           】,长度:【1         】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testCHAR                】,架构:dbo,参数类型:【char          】,长度:【1         】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testDATETIME            】,架构:dbo,参数类型:【datetime      】,长度:【16        】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testDECIMAL             】,架构:dbo,参数类型:【decimal       】,长度:【20        】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testFLOAT               】,架构:dbo,参数类型:【float         】,长度:【8         】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testINT                 】,架构:dbo,参数类型:【int           】,长度:【4         】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testMONEY               】,架构:dbo,参数类型:【money         】,长度:【21        】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testNCHAR               】,架构:dbo,参数类型:【nchar         】,长度:【2         】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testNTEXT               】,架构:dbo,参数类型:【ntext         】,长度:【2147483646】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testNUMBERIC            】,架构:dbo,参数类型:【numeric       】,长度:【20        】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testNVARCHAR            】,架构:dbo,参数类型:【nvarchar      】,长度:【2         】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testREAL                】,架构:dbo,参数类型:【real          】,长度:【4         】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testSMALLDATETIME       】,架构:dbo,参数类型:【smalldatetime 】,长度:【16        】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testSMALLINT            】,架构:dbo,参数类型:【smallint      】,长度:【2         】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testSMALLMONEY          】,架构:dbo,参数类型:【smallmoney    】,长度:【12        】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testTINYINT             】,架构:dbo,参数类型:【tinyint       】,长度:【1         】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testXML                 】,架构:dbo,参数类型:【xml           】,长度:【2147483646】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testVARCHAR             】,架构:dbo,参数类型:【varchar       】,长度:【200       】,方向:【1 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testOUTPUT_INT          】,架构:dbo,参数类型:【int           】,长度:【4         】,方向:【2 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testOUTPUT_BIT          】,架构:dbo,参数类型:【bit           】,长度:【1         】,方向:【2 】,允许空:【YES 】,所属proc:【proc_paras_test;1】
参数:【@testOUTPUT_NVARCHAR     】,架构:dbo,参数类型:【nvarchar      】,长度:【400       】,方向:【2 】,允许空:【YES 】,所属proc:【proc_paras_test;1】

 

 

 

 

 

 

 

看到了没有?上面就是mssql的参数对照表,然后我们又要硬编码自行转换了。

 

 

补充DataTableHelper代码如下:

package net.w2p.Shared.common.DB;


import java.sql.ResultSet;
import java.sql.ResultSetMetaData;


public class DataTableHelper
{
    public static DataTable rs2datatable(ResultSet rsList)
    {
     DataTable mytable = new DataTable();
     if (rsList == null) {
      return mytable;
    }
        try {
      ResultSetMetaData mdata = rsList.getMetaData();

      mytable.setColumnCount(mdata.getColumnCount());
       boolean firstGetColumnName = true;













      int cindex = 0;
      while (rsList.next())
            {
         DataRow myrow = new DataRow();
        myrow.setRowNumber(cindex);
        cindex++;







        for (int j = 0; j < mytable.getColumnCount(); j++) {
          if (firstGetColumnName == true) {
             mytable.addColumnName(mdata.getColumnName(j + 1));
                }




          String columnKeyName = (String)mytable.getColumnNames().get(j);
          Object columnValue = rsList.getObject(j + 1);
           DataColumn dcolumn = new DataColumn();
          dcolumn.setColumnNumber(j);
           dcolumn.setColumnName(columnKeyName);
          dcolumn.setColumnValue(columnValue);

           myrow.addDataColumn(dcolumn);
            }

        firstGetColumnName = false;
        mytable.getRows().add(myrow);
            }
       return mytable;
        }
        catch (Exception e) {
      e.printStackTrace();
        }
    return mytable;
    }
}

 

 

注意,其他额外的对象为:

package net.w2p.Shared.common.DB;


import java.util.ArrayList;

public class DataTable {
    /*  6 */   protected int _RowCount = -1;
    /*  7 */   private int _columnCount = -1;
    /*  8 */   private ArrayList<String> _columnNames = new ArrayList();
    /*  9 */   private ArrayList<DataRow> _RowList = new ArrayList();

    protected void setRowCount(int rowCount) {
/* 12 */     if (this._RowCount >= 0)
        {
/* 14 */       this._RowCount = rowCount; }
    }

    public int getRowCount() {
/* 18 */     return this._RowList.size();
    }

    public int getColumnCount() {
/* 22 */     if (this._columnCount < 0) {
/* 23 */       return this._columnNames.size();
        }
/* 25 */     return this._columnCount;
    }

    /* 28 */   protected void setColumnCount(int columnCount) { if (columnCount >= 0) {
/* 29 */       this._columnCount = columnCount;
    }
    }


    public DataRow get(int RowIndex)
    {
/* 36 */     if (this._RowList.size() <= RowIndex) {
/* 37 */       return null;
    }

/* 40 */     return (DataRow)this._RowList.get(RowIndex);
    }

    protected void addColumnName(String columnName)
    {
/* 45 */     this._columnNames.add(columnName);
    }

    public ArrayList<String> getColumnNames() {
/* 49 */     return this._columnNames;
    }

    /* 52 */   public ArrayList<DataRow> getRows() { return this._RowList; }
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我理解你的问题。如果你想实现添加管理员用户信息的功能,你需要进行以下步骤: 1. 创建数据库表格 你需要创建一张表格来存储管理员用户的信息。表格应该包括管理员用户的ID、姓名、密码、邮箱等信息。 2. 连接数据库 使用Java代码连接数据库,确保你可以从Java应用程序中访问数据库。 3. 编写SQL语句 编写SQL语句,用于向数据库中添加管理员用户信息。在这个语句中,你需要将管理员用户的信息插入到表格中。 4. 编写Java代码 编写Java代码,用于向数据库添加管理员用户信息。在这个代码中,你需要使用Java中的JDBC驱动程序来执行SQL语句并将管理员用户信息插入到数据库中。 下面是一个简单的示例代码,它可以向数据库中添加管理员用户信息: ```java import java.sql.*; public class AddAdminUser { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "root"; String password = "mypassword"; try { // 1.创建数据库连接 Connection conn = DriverManager.getConnection(url, user, password); // 2.创建SQL语句 String sql = "INSERT INTO admin_user (id, name, password, email) VALUES (?, ?, ?, ?)"; // 3.创建PreparedStatement对象 PreparedStatement pstmt = conn.prepareStatement(sql); // 4.设置参数 pstmt.setString(1, "admin001"); pstmt.setString(2, "admin"); pstmt.setString(3, "password"); pstmt.setString(4, "admin@example.com"); // 5.执行SQL语句 int rows = pstmt.executeUpdate(); System.out.println(rows + " row(s) affected"); // 6.关闭连接 pstmt.close(); conn.close(); } catch (SQLException ex) { ex.printStackTrace(); } } } ``` 在这个示例代码中,我们使用Java中的JDBC驱动程序来连接数据库,然后使用PreparedStatement对象来执行SQL语句并将管理员用户信息插入到数据库中。 请注意,这只是一个简单的示例代码,它只能添加一个管理员用户信息。如果你想批量添加管理员用户信息,你需要编写更复杂的Java代码来实现这个功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值