中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> IBM专区 > DB2 > 配置
DB2 UDB 连通性快捷表: 第 5 部分
作者:佚名 时间:2005-08-08 10:04 出处:互连网 责编:小渔
              摘要:DB2 UDB 连通性快捷表: 第 5 部分
 Jalud Abdulmenan, 数据库顾问
Raul F. Chong, 数据库顾问, IBM

2004 年 4 月
本文的焦点是使用 C++、Visual Basic、C# 和 Visual Basic .NET 等语言在工作站上开发 DB2 UDB ADO 和 ADO.NET 应用程序的连通性。

简介
这是第五篇讨论连通性应用场景的文章,其中涉及 IBM® DB2® Universal Database TM(UDB)for Linux, UNIX® and Windows® Version 8、DB2 UDB for iSeries 5.2 以及 DB2 UDB for z/OS V8*。与该系列的第 3 部分和第 4 部分一样,我们也将使用最新的版本;不过所介绍的方法也可能适用于其他的版本。

本文的焦点是工作站应用程序开发的连通性。这意味着我们将提供使用 ADO 和 ADO.NET 在工作站平台(Windows)上开发的示例程序,其中每个程序都连接到 DB2 UDB 数据库(任何平台),查询表然后断开连接。这些示例程序已经在 Microsoft® Windows 2000 平台上进行了测试。由于篇幅限制,本文的清单中只包含了代码片断。不过我们在本文的最后提供了一个 zip 文件,其中包含了完整的实用示例程序的源代码。我们还将一步步地指导如何使用 Microsoft Visual Studio 6 和 Microsoft Visual Studio .NET 创建示例程序。

由于本文的篇幅限制,我们也没有显示示例程序的输出结果;但是 ADO_ADONET_Results.zip 文件包含了测试的屏幕界面,这些测试是通过所有的示例程序在 DB2 UDB for Linux, UNIX and Windows、DB2 UDB for zSeries 以及 DB2 UDB for iSeries 服务器上执行的。

作为顾问,我经常需要用手边的示例程序来测试应用程序的连通性设置是否恰当。本文中的示例程序就可以用于此目的。在 DB2 UDB for Linux, UNIX and Windows V8 中,您现在可以使用配置助手(Configuration Assistant,CA)来测试多种类型的连接;不过,DB2 UDB 先前的版本也提供了示例程序以及关于连通性设置的更多详细信息。

本文对于数据库管理员(DBA)应该也是有用的,即使他们通常都无需给程序编码。因为在与他们的应用程序开发人员交流时,对于如何编写基于 DB2 数据库的程序有基本的了解必定对他们很有益。

本文中的程序是基于随 DB2 UDB 应用程序开发客户机(DB2 UDB Application Development client)提供的示例程序(在目录 sqllib/samples 下)的;然而为了易于理解,已对它们进行了简化。

本文将描述下列连通性的应用场景:

  • ADO:
    • 场景 1:使用 IBM OLE DB provider for DB2(IBMDADB2)连接 DB2 UDB 数据库
    • 场景 2:使用 Microsoft OLE DB Provider for ODBC(MSDASQLODBC)连接 DB2 UDB 数据库
  • ADO.NET:
    • 场景 3:使用 IBM DB2 .NET Data Provider 连接 DB2 UDB 数据库
    • 场景 4:使用 Microsoft OLE DB .NET Data Provider 连接 DB2 UDB 数据库
    • 场景 5:使用 Microsoft ODBC .NET Data Provider 连接 DB2 UDB 数据库

 

场景 1 - 使用 IBM OLE DB provider for DB2(IBMDADB2)连接 DB2 UDB 数据库

图 1 - 使用 IBM OLE DB Provider(IBMDADB2)从 DB2 UDB for Windows 应用程序客户机连接到 DB2 UDB(任何平台)
使用 IBM OLE DB Provider(IBMDADB2)从 DB2 UDB for Windows 应用程序客户机连接到 DB2 UDB(任何平台)的图形表示

清单 1和 清单 2展示了如何使用 MS OLE DB Provider for ODBC 连接到 DB2 数据库并且发出简单的 select 语句。您可以在源代码 zip 文件 这里 找到示例程序 dbConn_vb_ado_ibmdadb2.bas 和 dbConn_vc_ado_ibmdadb2.cpp。

清单 1:Visual Basic ADO 代码片断(IBM OLE DB Provider for DB2)

            Dim cmd As ADODB.Command
            Dim con As ADODB.Connection
            Dim rst As ADODB.Recordset
            Set con = New ADODB.Connection
            con.ConnectionString = "DSN=SAMPLE;UID=db2admin;PWD=mypsw;"
            con.Provider = "IBMDADB2"
            con.CursorLocation = adUseClient
            con.Open
            Set cmd = New ADODB.Command
            Set cmd.ActiveConnection = con
            cmd.CommandText = "SELECT * FROM SYSIBM.SYSDUMMY1"
            Set rst = cmd.Execute()
            MsgBox "Successful retrieval of record. Column" + _
            " 'IBMREQD' has a value of '" + _
            rst.Fields.Item("IBMREQD").Value + "'" + vbCrLf
            rst.Close
            con.Close
            
清单 2:Visual C++ ADO 代码片断(IBM OLE DB Provider for DB2)

            #import "C:\\program files\\common files\\system\\ado\\msado15.dll" \            no_namespace rename( "EOF", "adoEOF")
            [...]
            _CommandPtr pCmd  = NULL;
            _ConnectionPtr pConnection = NULL;
            _RecordsetPtr  pRst = NULL;
            _bstr_t strMsg;
            HRESULT  hr;
            try {
            hr = pConnection.CreateInstance(__uuidof(Connection));
            if FAILED(hr) { _com_issue_error(hr);}
            pConnection->ConnectionString =
            _bstr_t("DSN=sample;UID=db2admin;PWD=mypsw;");
            pConnection->CursorLocation = adUseClient;
            pConnection->Provider = "IBMDADB2";
            pConnection->Open("","","",adConnectUnspecified);
            hr = pCmd.CreateInstance(__uuidof(Command));
            if FAILED(hr){_com_issue_error(hr);}
            pCmd->ActiveConnection = pConnection;
            pCmd->CommandText = _bstr_t("SELECT * FROM SYSIBM.SYSDUMMY1");
            pRst = pCmd->Execute(NULL,NULL,adOptionUnspecified);
            strMsg  = _bstr_t("  Successful retrieval of record.");
            strMsg += _bstr_t(" Column 'IBMREQD' has a value of '");
            strMsg += _bstr_t(pRst->Fields->Item["IBMREQD"]->Value) ;
            strMsg += _bstr_t("'");
            printf("%s\\n",(LPCSTR)strMsg);
            pRst->Close();
            pConnection->Close();
            } catch(_com_error &e) { [...] }
            

表 1 - 使用 IBM OLE DB provider for DB2 从 DB2 UDB for Windows 连接到 DB2 UDB 服务器(任何平台)

Machine 1(‘myblue’)DB2 UDB for Windows

Machine 2(‘aries’)DB2 UDB 服务器(任何平台)

在这台机器上运行下列命令:

您需要从这台机器上获取下列信息,以便在 machine 1 上执行命令:

第一部分:配置连通性

请查阅该系列文章的 第 1 部分以获得连通性设置的详细指导。

 

第二部分:编译使用 IBM OLE DB provider for DB2 的程序

vb6 /m dbConn_vb_ado_ibmdadb2.vbp

关于详细信息,请参阅 指南 1

msdev dbConn_vc_ado_ibmdadb2.dsp /make "dbConn_vc_ado_ibmdadb2 - Win32 Release" /rebuild

关于详细信息,请参阅 分步指南 2

注意事项:

  • 在指定 Connection 对象的属性时,按照 表 3的指导进行。
  • Connection 对象的 CursorLocation 属性将影响 Recordset 对象上 CursorType 和 LockType 的选择,参阅 表 4。
  • 在指定 ConnectionString 属性时,不要用单引号括住 DSN、UID 和 PWD 键/值对。
  • 您的代码必须引用 ADO 类型库(msado15.dll 或其他版本的 msado<xx>.dll),该库通常可以在 C:\\Program Files\\Common Files\\System\\ADO中找到。
  • 您无需将 DB2 数据库编目为 ODBC 数据源。

 

*注意:IBM OLE DB provider for DB2(ibmdadb2.dll)通常位于 sqllib\\bin

为了编译示例程序,您需要:

  • DB2 Application Development Client
  • Microsoft Data Access Components(MDAC)2.7 或更高版本
  • 带有 Service Pack 5 的 Microsoft Visual Studio 6

 

dbalias 用于连接数据库。当 Catalog 命令中没有提供 dbalias 时(按照上面的第一部分),dbalias 就与 dbname 相同。

第三部分:执行程序

dbConn_vb_ado_ibmdadb2.exe sample db2admin mypsw

dbConn_vc_ado_ibmdadb2.exe sample db2admin mypsw

* 示例程序将要按下列次序接收 3 个参数:<数据库名> <用户 ID> <口令>

sample = 数据库名

db2admin = 服务器上的用户 ID

mypsw = 服务器上的口令

场景 2 - 使用 Microsoft OLE DB Provider for ODBC(MSDASQL)连接 DB2 UDB 数据库

图 2 - 使用 Microsoft OLE DB Provider for ODBC(MSDASQL)从 DB2 UDB for Windows 应用程序客户机连接到 DB2 UDB(任何平台)
使用 Microsoft OLE DB Provider for ODBC(MSDASQL)从 DB2 UDB for Windows 应用程序客户机连接到 DB2 UDB(任何平台)

清单 3和 清单 4 展示了如何使用 Microsoft OLE DB Provider for ODBC 连接到 DB2 数据库并且发出简单的 select 语句。您可以在源代码 zip 文件 这里 找到示例程序 dbConn_vb_ado_msdasql.bas 和 dbConn_vc_ado_msdasql.cpp。

清单 3:Visual Basic ADO 代码片断(Microsoft OLE DB Provider for ODBC)

            Dim cmd As ADODB.Command
            Dim con As ADODB.Connection
            Dim rst As ADODB.Recordset
            Set con = New ADODB.Connection
            con.ConnectionString = "DSN=SAMPLE;UID=db2admin;" + _
            "PWD=mypsw;Driver={IBM DB2 ODBC DRIVER};"
            con.Provider = "MSDASQL"
            con.CursorLocation = adUseClient
            con.Open
            Set cmd = New ADODB.Command
            Set cmd.ActiveConnection = con
            cmd.CommandText = "SELECT * FROM SYSIBM.SYSDUMMY1"
            Set rst = cmd.Execute()
            MsgBox "Successful retrieval of record. Column" + _
            " 'IBMREQD' has a value of '" + _
            rst.Fields.Item("IBMREQD").Value + _
            "'" + vbCrLf
            rst.Close
            con.Close
            
清单 4:Visual C++ ADO 代码片断(Microsoft OLE DB Provider for ODBC)

            #import "C:\\program files\\common files\\system\\ado\\msado15.dll" \            no_namespace rename( "EOF", "adoEOF")
            [...]
            _CommandPtr pCmd  = NULL;
            _ConnectionPtr pConnection = NULL;
            _RecordsetPtr  pRst = NULL;
            _bstr_t strMsg;
            HRESULT  hr;
            try{
            hr = pConnection.CreateInstance(__uuidof(Connection));
            if FAILED(hr){_com_issue_error(hr);}
            pConnection->ConnectionString= _bstr_t("DSN=sample;
            UID=db2admin;PWD=mypsw;Driver={IBM DB2 ODBC DRIVER};");
            pConnection->CursorLocation = adUseClient;
            pConnection->Provider = "MSDASQL";
            pConnection->Open("","","",adConnectUnspecified);
            hr = pCmd.CreateInstance(__uuidof(Command));
            if FAILED(hr) {_com_issue_error(hr);}
            pCmd->ActiveConnection = pConnection;
            pCmd->CommandText = _bstr_t("SELECT * FROM SYSIBM.SYSDUMMY1");
            pRst = pCmd->Execute(NULL,NULL,adOptionUnspecified);
            strMsg  = _bstr_t("  Successful retrieval of record.");
            strMsg += _bstr_t(" Column 'IBMREQD' has a value of '");
            strMsg += _bstr_t(pRst->Fields->Item["IBMREQD"]->Value) ;
            strMsg += _bstr_t("'");
            printf("%s\\n",(LPCSTR)strMsg);
            pRst->Close();
            pConnection->Close();
            } catch(_com_error &e){ [...] }
            

表 2 - 使用 Microsoft OLE DB Provider for ODBC 从 DB2 UDB for Windows 连接到 DB2 UDB 服务器(任何平台)

Machine 1(‘myblue’)DB2 UDB for Windows

Machine 2(‘aries’)DB2 UDB 服务器(任何平台)

在这台机器上运行下列命令:

您需要从这台机器上获取下列信息,以便在 machine 1 上执行命令:

第一部分:配置连通性

必须将 DB2 数据库编目为 ODBC 数据源。编目 ODBC 数据源:

 

db2 catalog system ODBC data source sample

 

 

db2 catalog user ODBC data source sample

 

列举 ODBC 数据源:

 

db2 list system ODBC data sources

 

 

db2 list user ODBC data sources

请查阅该系列文章的 第 1 部分以获得连通性设置的详细指导,并查阅 第 4 部分以将数据库注册为 ODBC 数据源。

 

第二部分:编译使用 Microsoft OLE DB Provider for ODBC 的程序

vb6 /m dbConn_vb_ado_msdasql.vbp

关于详细信息,请参阅 分步指南 1

msdev dbConn_vc_ado_msdasql.dsp /make "dbConn_vc_ado_msdasql - Win32 Release" /rebuild

关于详细信息,请参阅 分步指南 2

注意事项:

  • 在指定 Connection 对象的属性时,按照 表 3的指导进行。
  • Connection 对象的 CursorLocation 属性将影响 Recordset 对象上 CursorType 和 LockType 的选择,参阅 表 4。
  • 在指定 ConnectionString 属性时,不要用单引号括住 DSN、UID 和 PWD 键/值对。
  • 在 ConnectionString 中指定 Driver 键/值:"Driver={IBM DB2 ODBC DRIVER};"
  • 您的代码必须引用 ADO 类型库(msado15.dll 或其他版本的 msado<xx>.dll),该库通常可以在 C:\\Program Files\\Common Files\\System\\ADO中找到。

 

*注意:IBM OLE DB provider for DB2(ibmdadb2.dll)通常位于 sqllib\\bin

为了编译示例程序,您需要:

  • DB2 Application Development Client
  • Microsoft Data Access Components(MDAC)2.7 或更高版本
  • 带有 Service Pack 5 的 Microsoft Visual Studio 6

 

dbalias 用于连接数据库。当 Catalog 命令中没有提供 dbalias 时(按照上面的第一部分),dbalias 就与 dbname 相同。

第三部分:执行程序

dbConn_vb_ado_msdasql.exe sample db2admin mypsw

dbConn_vc_ado_msdasql.exe sample db2admin mypsw

* 示例程序将要按下列次序接收 3 个参数:<数据库名> <用户 ID> <口令>

sample = 数据库名

db2admin = 服务器上的用户 ID

mypsw = 服务器上的口令

表 3 - 特定于连接 DB2 UDB 数据库的 Connection 对象的属性与值

ADO Connection 对象属性

Connection String

"DSN=sample;UID=db2admin;PWD=mypsw;Driver={IBM DB2 ODBC DRIVER};"

 

只有在使用 MS OLE DB Provider for ODBC 时指定

(还可以指定 DB2 CLI 关键字-值对)

CursorLocation

adUseClient

 

(可更新的双向游标)

 

adUseServer

 

(不可更新的前向游标)

Mode

adModeReadWrite

Provider 1

"IBMDADB2"

 

(IBM OLE DB Provider for DB2)

 

(无需将数据库编目为 ODBC 数据源)

 

"MSDASQL"

 

(MS OLE DB Provider for ODBC)

 

(必须将数据库编目为 ODBC 数据源)

CommandTimeOut

30(以秒为单位加以指定)(默认)

 

or

0(一直等到执行完毕)

Attributes

0(默认)

 

adXactAbortRetaining

 

(调用 RollbackTrans 时自动启动一个新的事务)

 

adXactCommitRetaining

 

(调用 CommitTrans 时自动启动一个新的事务)

 

adXactAbortRetaining+adXactCommitRetaining

 

(调用 RollbackTrans 时自动启动一个新的事务以及调用 CommitTrans 时自动启动一个新的事务)

IsolationLevel

adXactReadCommitted(或 adXactCursorStability)(默认)

 

(游标稳定性 - CS)

 

adXactIsolated(或 adXactSerializable)

 

(可重复读 - RR)

 

adXactReadUncommitted

 

(未提交读 - UR)

 

adXactRepeatableRead

 

(读稳定性 - RS)

1您还可以在 Connection String 属性中指定 provider(例如 Provider=IBMDADB2;)。然而,您只能要么指定 Provider 属性,要么在 Connection String 属性中指定 provider 参数。

如 表 4 中所示,Connection 对象的 CursorLocation 属性将约束与之相关的 Recordset 对象的 CursorType 和 LockType 属性的值。

表 4 - Connection 对象的 CursorLocation 属性约束 Recordset 对象的 CursorType 和 LockType 属性的值

CursorLocation(Connection 对象)

CursorType(Recordset 对象)

LockType 2(Recordset 对象)

adUseClient

adOpenStatic

adLockReadOnly

adUseServer

adOpenForwardOnly

adLockReadOnly

 

adLockPessimistic

2IBM OLE DB provider for DB2 不支持 LockType 属性。

场景 3 - 使用 IBM DB2 .NET Data Provider 连接 DB2 UDB 数据库

图 3 - 使用 IBM DB2 .NET Data Provider 从 DB2 UDB for Windows 应用程序客户机连接到 DB2 UDB(任何平台)
使用 IBM DB2 .NET Data Provider 从 DB2 UDB for Windows 应用程序客户机连接到 DB2 UDB(任何平台)

清单 5和 清单 6 展示了如何使用 IBM DB2 .NET Data Provider 连接 DB2 数据库并且发出简单的 select 语句。您可以在源代码 zip 文件 这里 找到示例应用程序 dbConn_vb_adoNET_ibmdatadb2.vb 和 dbConn_cs_adoNET_ibmdatadb2.cs。

清单 5:Visual Basic ADO.NET 代码片断(IBM DB2 .NET Data Provider)

            Imports IBM.Data.DB2
            [...]
            Dim cmd As DB2Command
            Dim con As DB2Connection
            Dim rdr As DB2DataReader
            Dim v_IBMREQD As String
            Try
            con = New DB2Connection("Database=SAMPLE;" +
            "UID=db2admin;PWD=mypsw;")
            cmd = New DB2Command()
            cmd.Connection = con
            cmd.CommandText = "SELECT * FROM SYSIBM.SYSDUMMY1"
            cmd.CommandTimeout = 20
            con.Open()
            rdr = cmd.ExecuteReader(CommandBehavior.SingleResult)
            v_IBMREQD = "";
            while (rdr.Read() == true) {
            v_IBMREQD = rdr.GetString(0); }
            strMsg = "  Successful retrieval of record. Column " +
            "'IBMREQD' has a value of '" +
            v_IBMREQD + "'";
            Console.WriteLine(strMsg);
            rdr.Close()
            con.Close()
            Catch myException As DB2Exception
            [...]
            End Try
            
清单 6:C# ADO.NET 代码片断(IBM DB2 .NET Data Provider)

            using IBM.Data.DB2;
            [...]
            DB2Command cmd = null;
            DB2Connection con = null;
            DB2DataReader rdr = null;
            int rowCount;
            try{
            con = new DB2Connection("Database=SAMPLE;UID=db2admin;PWD=mypsw;");
            cmd = new DB2Command();
            cmd.Connection = con;
            cmd.CommandText = "SELECT * FROM SYSIBM.SYSDUMMY1";
            cmd.CommandTimeout = 20;
            con.Open();
            rdr = cmd.ExecuteReader(CommandBehavior.SingleResult);
            v_IBMREQD = "";
            while (rdr.Read() == true) {
            v_IBMREQD = rdr.GetString(0); }
            strMsg = "  Successful retrieval of record. Column" +
            " 'IBMREQD' has a value of '" + v_IBMREQD + "'";
            Console.WriteLine(strMsg);
            rdr.Close();
            con.Close();
            } catch (DB2Exception myException) { [...] }
            

表 5 - 使用 IBM DB2 .NET Data Provider 从 DB2 UDB for Windows 连接到 DB2 UDB 服务器(任何平台)

Machine 1(‘myblue’)DB2 UDB for Windows

Machine 2(‘aries’)DB2 UDB 服务器(任何平台)

在这台机器上运行下列命令:

您需要从这台机器上获取下列信息,以便在 machine 1 上执行命令:

第一部分:配置连通性

请查阅该系列文章的 第 1 部分以获得连通性设置的详细指导。

 

第二部分:编译使用 IBM DB2 .NET Data Provider 的程序

devenv /rebuild debug "dbConn_vb_adoNET_ibmdatadb2.sln"

关于详细信息,请参阅 分步指南 3或 分步指南 4

注意事项:

  • 在指定 .NET Data Provider 时,请查阅 表 8。
  • 在指定 Connection 对象的 ConnectionString 属性时,请按照 表 9的指导进行。
  • 您的代码必须引用 IBM DB2 .NET Data Provider 类型库,该库通常可以在 sqllib\\bin\\netf10中找到。
  • 您无需将 DB2 数据库编目为 ODBC 数据源。
  • 如果您在 ConnectionString 中指定了 Server 关键字/值对并且需要直接连接 DB2 UDB 服务器,就无需在本地编目 DB2 数据库。

 

为了编译示例程序,您需要:

  • 带有 Fix Pack 2 或更高版本的 DB2 UDB v8 Application Development Client 2(Fix Pack 2 支持 MS .NET framework v1.0)(Fix Pack 3 支持 MS .NET framework v1.0 和 v1.1)
  • Microsoft Data Access Components(MDAC)2.7 或更高版本
  • Microsoft Visual Studio .NET(.NET framework v1.0)或 Microsoft Visual Studio .NET 2003(.NET framework v1.1)

 

dbalias 用于连接数据库。当 Catalog 命令中没有提供 dbalias 时(按照上面的第一部分),dbalias 就与 dbname 相同。

第三部分:执行程序

dbConn_vb_adoNET_ibmdatadb2.exe sample db2admin mypsw

dbConn_cs_adoNET_ibmdatadb2.exe sample db2admin mypsw

* 示例程序将要按下列次序接收 3 个参数:<数据库名> <用户 ID> <口令>

sample = 数据库名

db2admin = 服务器上的用户 ID

mypsw = 服务器上的口令

场景 4 - 使用 Microsoft OLE DB .NET Data Provider 连接 DB2 UDB 数据库

图 4 - 使用 Microsoft OLE DB .NET Data Provider 从 DB2 UDB for Windows 应用程序客户机连接到 DB2 UDB(任何平台)
使用 Microsoft OLE DB .NET Data Provider 从 DB2 UDB for Windows 应用程序客户机连接到 DB2 UDB(任何平台)

清单 7和 清单 8 展示了如何使用 MS OLE DB .NET Data Provider 连接到 DB2 数据库并且发出简单的 select 语句。您可以在源代码 zip 文件 这里 找到示例程序 dbConn_vb_adoNET_msoleddbnet.vb 和 dbConn_cs_adoNET_msoleddbnet.cs。

清单 7:Visual Basic ADO.NET 代码片断(Microsoft OLE DB .NET Data Provider)

            Imports System.Data.OleDb
            [...]
            Dim cmd As OleDbCommand
            Dim con As OleDbConnection
            Dim rdr As OleDbDataReader
            Dim v_IBMREQD As String
            Try
            con = New OleDbConnection("DSN=SAMPLE;UID=db2admin;PWD=mypsw;" + _
            "Provider='IBMDADB2';")
            cmd = New OleDbCommand()
            cmd.Connection = con
            cmd.CommandText = "SELECT * FROM SYSIBM.SYSDUMMY1"
            cmd.CommandTimeout = 20
            con.Open()
            rdr = cmd.ExecuteReader(CommandBehavior.SingleResult)
            While rdr.Read()
            v_IBMREQD = rdr.GetString(0)
            End While
            Console.WriteLine('IBMREQD' has a value of '" + v_IBMREQD + "'")
            rdr.Close()
            con.Close()
            Catch myException As OleDbException
            [...]
            End Try
            
清单 8:C# ADO.NET 代码片断(Microsoft OLE DB .NET Data Provider)

            using System.Data.OleDb;
            [...]
            OleDbCommand cmd = null;
            OleDbConnection con = null;
            OleDbDataReader rdr = null;
            int rowCount;
            try
            {
            con = new OleDbConnection("DSN=SAMPLE;UID=db2admin;PWD=mypsw;" +
            "Provider='IBMDADB2';");
            cmd = new OleDbCommand();
            cmd.Connection = con;
            cmd.CommandText = "SELECT * FROM SYSIBM.SYSDUMMY1";
            cmd.CommandTimeout = 20;
            con.Open();
            rdr = cmd.ExecuteReader(CommandBehavior.SingleResult);
            v_IBMREQD = "";
            while (rdr.Read() == true) {
            v_IBMREQD = rdr.GetString(0); }
            strMsg = "  Successful retrieval of record. Column" +
            " 'IBMREQD' has a value of '" + v_IBMREQD + "'";
            Console.WriteLine(strMsg);
            rdr.Close();
            con.Close();
            } catch (OleDbException myException) { [...] }
            

表 6 - 使用 Microsoft OLE DB .NET Data Provider 从 DB2 UDB for Windows 连接到 DB2 UDB 服务器(任何平台)

Machine 1(‘myblue’)DB2 UDB for Windows

Machine 2(‘aries’)DB2 UDB 服务器(任何平台)

在这台机器上运行下列命令:

您需要从这台机器上获取下列信息,以便在 machine 1 上执行命令:

第一部分:配置连通性

请查阅该系列文章的 第 1 部分以获得连通性设置的详细指导。

 

第二部分:编译使用 IBM DB2 .NET Data Provider 的程序

devenv /rebuild debug "dbConn_vb_adoNET_ibmdatadb2.sln"

关于详细信息,请参阅 分步指南 3或 分步指南 4。

注意事项:

  • 在指定 .NET Data Provider 时,请查阅 表 8。
  • 在指定 Connection 对象的 ConnectionString 属性时,按照 表 9的指导进行。
  • 在 ConnectionString 属性中,您必须使用 DSN 关键字来代替 Database 关键字。
  • 在 ConnectionString 属性中指定 Provider 关键字/值对 "Provider='IBMDADB2';"
  • 您无需将 DB2 数据库编目为 ODBC 数据源。
  • 如果您在 ConnectionString 中指定了 Server 关键字/值对并且需要直接连接到 DB2 UDB 服务器,就无需在本地编目 DB2 数据库。

 

为了编译示例程序,您需要:

  • 带有 Fix Pack 2 或更高版本的 DB2 UDB v8 Application Development Client(Fix Pack 2 支持 MS .NET framework v1.0)(Fix Pack 3 支持 MS .NET framework v1.0 和 v1.1)
  • Microsoft Data Access Components(MDAC)2.7 或更高版本
  • Microsoft Visual Studio .NET(.NET framework v1.0)或 Microsoft Visual Studio .NET 2003(.NET framework v1.1)

 

dbalias 用于连接数据库。当 Catalog 命令中没有提供 dbalias 时(按照上面的第一部分),dbalias 就与 dbname 相同。

第三部分:执行程序

dbConn_vb_adoNET_msoleddbnet.exe sample db2admin mypsw

dbConn_cs_adoNET_msoleddbnet.exe sample db2admin mypsw

* 示例程序将要按下列次序接收 3 个参数:<数据库名> <用户 ID> <口令>

sample = 数据库名

db2admin = 服务器上的用户 ID

mypsw = 服务器上的口令

场景 5 - 使用 Microsoft ODBC .NET Data Provider 连接 DB2 UDB 数据库

图 5 - 使用 Microsoft ODBC .NET Data Provider 从 DB2 UDB for Windows 应用程序客户机连接到 DB2 UDB(任何平台)
使用 Microsoft ODBC .NET Data Provider 从 DB2 UDB for Windows 应用程序客户机连接到 DB2 UDB(任何平台)

清单 9和 清单 10展示了如何使用 MS ODBC .NET Data Provider 连接到 DB2 数据库并且发出简单的 select 语句。您可以在源代码 zip 文件 这里 找到示例程序 dbConn_vb_ado_msodbcnet.vb 和 dbConn_cs_ado_msodbcnet.cs。

清单 9:Visual Basic ADO.NET 代码片断(Microsoft ODBC .NET Data Provider)

            Imports Microsoft.Data.Odbc
            [...]
            Dim cmd As OdbcCommand
            Dim con As OdbcConnection
            Dim rdr As OdbcDataReader
            Dim v_IBMREQD As String
            Try
            con = New OdbcConnection("DSN=SAMPLE;UID=db2admin;PWD=mypsw;" + _
            "Driver={IBM DB2 ODBC DRIVER};")
            cmd = New OdbcCommand()
            cmd.Connection = con
            cmd.CommandText = "SELECT * FROM SYSIBM.SYSDUMMY1"
            cmd.CommandTimeout = 20
            con.Open()
            rdr = cmd.ExecuteReader(CommandBehavior.SingleResult)
            While rdr.Read()
            v_IBMREQD = rdr.GetString(0)
            End While
            Console.WriteLine('IBMREQD' has a value of '" + v_IBMREQD + "'")
            rdr.Close()
            con.Close()
            Catch myException As OdbcException
            [...]
            End Try
            
清单 10:C# ADO.NET 代码片断(Microsoft ODBC .NET Data Provider)

            using Microsoft.Data.Odbc;
            [...]
            OdbcCommand cmd = null;
            OdbcConnection con = null;
            OdbcDataReader rdr = null;
            int rowCount;
            try
            {
            con = new OdbcConnection("DSN=SAMPLE;UID=;PWD=;" +
            "Driver={IBM DB2 ODBC DRIVER};");
            cmd = new OdbcCommand();
            cmd.Connection = con;
            cmd.CommandText = "SELECT * FROM SYSIBM.SYSDUMMY1";
            cmd.CommandTimeout = 20;
            con.Open();
            rdr = cmd.ExecuteReader(CommandBehavior.SingleResult);
            while (rdr.Read() == true) {
            v_IBMREQD = rdr.GetString(0); }
            strMsg = "  Successful retrieval of record. Column" +
            " 'IBMREQD' has a value of '" + v_IBMREQD + "'";
            Console.WriteLine(strMsg);
            rdr.Close();
            con.Close();
            } catch (OdbcException myException) { [...] }
            

表 7 - 使用 Microsoft ODBC .NET Data Provider 从 DB2 UDB for Windows 连接到 DB2 UDB 服务器(任何平台)

Machine 1(‘myblue’)DB2 UDB for Windows

Machine 2(‘aries’)DB2 UDB 服务器(任何平台)

在这台机器上运行下列命令:

您需要从这台机器上获取下列信息,以便在 machine 1 上执行命令:

第一部分:配置连通性

必须将 DB2 数据库编目为 ODBC 数据源。编目 ODBC 数据源:

 

db2 catalog system ODBC data source sample

 

 

db2 catalog user ODBC data source sample

 

列举 ODBC 数据源:

 

db2 list system ODBC data sources

 

 

db2 list user ODBC data sources

请查阅该系列文章的 第 1 部分以获得连通性设置的详细指导,并查阅 第 4 部分以将数据库注册为 ODBC 数据源。

 

第二部分:编译使用 IBM DB2 .NET Data Provider 的程序

devenv /rebuild debug "dbConn_vb_adoNET_ibmdatadb2.sln"

关于详细信息,请参阅 分步指南 3或 分步指南 4。

注意事项:

  • 在指定 .NET Data Provider 时,请查阅 表 8。
  • 在指定 Connection 对象的 ConnectionString 属性时,请按照 表 9的指导进行。
  • 在 ConnectionString 属性中指定 Driver 关键字/值对 "Driver={IBM DB2 ODBC DRIVER};"
  • 在 ConnectionString 属性中指定 Provider 关键字/值对 "Provider='IBMDADB2';"
  • 如果使用 .NET framework v1.0,您的代码必须引用 MS ODBC .NET Data Provider3 类型库。在我们的系统中,该库位于 c:\\program files\\Microsoft.NET\\Odbc.Net\\Microsoft.Data.Odbc.dll

 

为了编译示例程序,您需要:

  • 带有 Fix Pack 2 或更高版本的 DB2 UDB v8 Application Development Client with Fix Pack 2 or higher(Fix Pack 2 支持 MS .NET framework v1.0)(Fix Pack 3 支持 MS .NET framework v1.0 和 v1.1)
  • Microsoft Data Access Components(MDAC)2.7 或更高版本
  • MS ODBC .NET Data Provider 3(使用 MS .NET framework v1.0 的情况下)
  • Microsoft Visual Studio .NET(.NET framework v1.0)或 Microsoft Visual Studio .NET 2003(.NET framework v1.1)

 

dbalias 用于连接数据库。当 Catalog 命令中没有提供 dbalias 时(按照上面的第一部分),dbalias 就与 dbname 相同。

第三部分:执行程序

dbConn_vb_adoNET_msodbcnet.exe sample db2admin mypsw

ddbConn_cs_adoNET_msodbcnet.exe sample db2admin mypsw

* 示例程序将要按下列次序接收 3 个参数:<数据库名> <用户 ID> <口令>

sample = 数据库名

db2admin = 服务器上的用户 ID

mypsw = 服务器上的口令

3MS ODBC .NET Data Provider 没有包含在 .NET Framework v1.0 中,但是可以从 Microsoft .NET Framework Download 网站下载。

表 8 - ADO.NET Data Provider 及其核心对象

 

IBM DB2 .NET Data Provider

MS ODBC .NET Data Provider

MS OLE DB .NET Data Provider

名称空间

IBM.Data.DB2

Microsoft.Data.Odbc 3(.NET Framework v1.0)

 

System.Data.Odbc(.NET Framework v1.1)

System.Data.OleDb

组件

IBM.Data.DB2.dll

Microsoft.Data.Odbc.dll

 

System.Data.Odbc.dll

System.Data.dll

Connection 对象

DB2Connection

OdbcConnection

OleDbConnection

Transaction 对象

DB2Transaction

OdbcTransaction

OleDbTransaction

Command 对象

DB2Command

OdbcCommand

OleDbCommand

DataReader

DB2DataReader

OdbcDataReader

OleDbDataReader

DataAdapter

DB2DataAdapter

OOdbcDataAdapter

OleDbDataAdapter

3MS ODBC .NET Data Provider 没有包含在 .NET Framework v1.0 中,但是可以从 Microsoft .NET Framework Download 网站下载。

表 9 - 特定于连接 DB2 UDB 数据库的 ConnectionString 关键字/值对

ConnectionString 关键字

Database(或 DSN 4

sample

UID

db2admin

PWD

mypsw

Server

aries aries:50000 9.23.190.24:5000

(在直接连接到 DB2 UDB 服务器时指定)

Connection Timeout (或 Connect Timeout)(或 Timeout)

60(以秒为单位加以指定)

Pooling

true(默认)

 

false

Min Pool Size

0(默认)

Max Pool Size

若不存在限制就不必指派该值(默认)

Connection Reset

true

 

false

Connection Lifetime

15(以秒为单位加以指定)(默认)

Enlistt

true(默认)

 

false

Provider

IBMDADB2

(只在使用 MS OLE DB .NET Data Provider 时指定)

Driver

{IBM DB2 ODBC DRIVER}

(只在使用 MS ODBC .NET Data Provider 时指定)

4只有在使用 IBM DB2 .NET Data Provider 时使用 Database 关键字,否则使用 DSN 关键字。

表 10 - 常见错误的解决

 

错误

适用于

解决

1

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

  • MS OLE DB Provider for ODBC
  • MS ODBC .NET Data Provider

确保编目了 ODBC 数据源。

确保为数据库指定了恰当的名字。

通过从 CLP 进行连接,测试是否正确编目了数据库:

 

db2 connect to <dbname> user <userid> using <psw>

2

Unhandled Exception: System.IO.FileNotFoundException: File or assembly name IBM.Data.DB2, or one of its dependencies, was not found.

IBM DB2 .NET Data Provider

确保在您的运行时系统上安装了 DB2 UDB V8 Client 或更高版本。如果在安装 DB2 UDB V8 Client 或更高版本之后仍然出现该错误,(作为补救措施)您可以将 IBM.Data.DB2.dll 从 \\SQLLIB\\BIN\\netf10 或 \\SQLLIB\\BIN\\netf11 复制到当前的工作目录中

3

Unhandled Exception: System.IO.FileLoadException: The located assembly's manifest definition with name 'IBM.Data.DB2' does not match the assembly reference.

IBM DB2 .NET Data Provider

确保您运行时系统中的 IBM DB2 .NET Data Provider 的版本与开发系统中的相同

4

An OLE DB Provider was not specified in the ConnectionString. An example would be, 'Provider=SQLOLEDB;'

MS OLE DB .NET Data Provider

确保您在 ConnectionString 中指定了 Provider 关键字,例如 'Provider=IBMDADB2'

5

SQL1013N The database alias name or database name "" could not be found. SQLSTATE=42705

All except IBM DB2 .NET Data Provider

确保您在 ConnectionString 中指定的是 DSN 关键字,而非 Database 关键字

6

Invalid argument

IBM DB2 .NET Data Provider

确保您在 ConnectionString 中指定的是 Database 关键字,而非 DSN 关键字

7

按照该系列的 第 4 部分检查错误

全部

 

注册 IBM DB2 Development Add-In for Visual Studio .NET
如果 Visual Studio .NET 是在安装 DB2 UDB V8 Application Development Client(或更高版本)之前安装的,那么在 DB2 的安装过程中则会自动注册 IBM DB2 Development Add-In for Visual Studio .NET。

另一方面,如果您是在安装 DB2 UDB V8 Application Development Client(或更高版本)之后才安装 Visual Studio .NET,或者如果您修改了其安装过程,那么您就需要手工注册 IBM DB2 Development Add-In for Visual Studio .NET。

该工作可以通过两种方式完成:

1. 从 Windows Start 菜单选择:

 

Start -> Programs -> IBM DB2 -> Set-up Tools -> Register Visual Studio Add-Ins

2. 从 DB2 Command 窗口,发出以下命令:

 

db2nmpreg

您还可以取消对 IBM DB2 Development Add-In for Visual Studio .NET 的注册。

从 DB2 Command 窗口,发出以下命令:

 

db2nmpreg -u

分步指南 1:创建 Visual Basic ADO 应用程序
下列步骤将使用 MS Visual Basic 6 创建一个 Visual Basic ADO 应用程序。

  1. 创建一个 Visual Basic 项目
    1. File菜单上,选择 New Project
    2. New Project对话框上,选择 Standard EXE 项目模板。这个新的 Visual Basic 项目将包含一个窗体(Form1),而其 Project Explorer窗口将类似于 图 6所示。

    图 6 - 创建新的 Visual Basic 项目
    创建新的 Visual Basic 项目

  2. 复制并且粘贴 Visual Basic 示例程序:
    1. Project菜单上,选择 Add Module
    2. Add Module对话框上,切换到 New选项卡并选择 Module。而 Project Explorer窗口将显示出新的模块(Module1),并且应该类似于 图 7所示。
    3. Project Explorer窗口上,右击 Form1并选择 Remove Form1。一般来说,您应该使用窗体来向用户提供 GUI。而对于我们的示例程序,一个弹出式消息框就足够了。
    4. 将其中一个 Visual Basic ADO 示例应用程序(例如 dbConn_vb_ado_ibmdadb2.bas)复制并且粘贴到 Module1中。

    图 7 - 向项目添加 Visual Basic ADO 示例应用程序
    向项目添加 Visual Basic ADO 示例应用程序

  3. 更改项目名并设置项目的 Startup Object:
    1. Project Explorer窗口上,右击 Project1并选择 Project1 Properties
    2. Project Properties对话框里的 Startup Object下选择 Sub Main并在 Project Name下指定新的项目名,例如 dbConn_vb_ado_ibmdadb2。

    图 8 - 设置项目的 Startup Object
    设置项目的 Startup Object

  4. 添加对 MS ADO 类型库的引用:
    1. Project菜单上,选择 References
    2. References对话框上,向下滚动并选择 Microsoft ActiveX Data Objects X.X Library。X.X 代表在您系统上所安装的 Microsoft Data Access Components(MDAC)的版本。如 图 9 所示,我们的系统上安装了 MDAC 2.8,因而选择的是 Microsoft ActiveX Data Objects 2.8 Library。如果未列出该类型库,就单击 Browse 并从其所位于的目录中选择该类型库。例如在我们的系统上, msado15.dll 就位于 C:\\Program Files\\Common Files\\System\\ADO

    图 9 - 添加对 MS ADO 类型库的引用
    添加对 MS ADO 类型库的引用

  5. 在 Visual Basic IDE 里创建可执行文件:
    1. File菜单上,选择 Save Project。为模块 Module1 指定项目目录和名称(例如 dbConn_vb_ado_ibmdadb2.bas)。
    2. File菜单上,选择 Make <projectname>.exe。这将在您所指定的目录中生成一个可执行文件。

    图 10 - 为项目创建可执行程序
    为项目创建可执行程序

  6. 从命令行创建可执行文件。

    您也可以从命令行为 Visual Basic 项目创建可执行文件。在命令提示符后,输入:

    vb6 /m <projectname>.vbp

    vb6 /m dbConn_vb_ibmdadb2.vbp

    图 11 - 从命令行构建项目
    从命令行构建项目

分步指南 2:创建 Visual C++ ADO 应用程序
下列步骤将使用 MS Visual C++ 6 创建一个 Visual C++ ADO 应用程序。

  1. 创建一个 Visual C++ 项目:
    1. File菜单上,选择 New
    2. New对话框上,切换到 Projects选项卡并选择 Win32 Console Application项目模板。在 Project NameLocation下分别指定项目名和目录。
    3. Win32 Console Application对话框上,将 A simple application 选作项目模板并单击 Finish按钮。新的 VC++ 项目将包含两个 C++ 源文件和一个头文件。 Project Workspace窗口将类似于 图 12 所示。

    图 12 - 创建新的 Visual C++ 项目
    创建新的 Visual C++ 项目

  2. 复制并粘贴 VC++ 示例应用程序:
    1. 将其中一个 VC++ ADO 示例应用程序(例如 dbConn_vc_ado_ibmdadb2)复制并粘贴到 <projectname>.cpp 文件中,如 图 13 中所示。不要粘贴到预编译的头文件 StdAfx.cpp 和 StdAfx.h 中。
    2. 将 ADO 库文件的头声明从同一示例应用程序中复制并粘贴到预编译的头文件 StdAfx.h 中,如 图 14中所示。

    图 13 - 向项目添加 Visual C++ ADO 示例应用程序
    向项目添加 Visual C++ ADO 示例应用程序

    图 14 - 将示例应用程序的 ADO 库头复制并粘贴到预编译的头文件中
    将示例应用程序的 ADO 库头复制并粘贴到预编译的头文件中

  3. 在 MS Visual C++ IDE 里创建可执行文件:
    1. File菜单上,选择 Save All
    2. Build菜单上,选择 Build <projectname>.exe。这将在项目目录下的子目录 Debug 或 Release 中生成一个可执行文件。

    图 15 - 为项目创建可执行程序
    为项目创建可执行程序

  4. 从命令行创建可执行文件。

    您也可以从命令行为 VC++ 项目创建可执行文件。在命令提示符后,输入:

    msdev <projectname>.dsp /make "<projectname> - Win32 Release" /rebuild

    例如 msdev dbConn_vc_ado_ibmdadb2.dsp /make "dbConn_vc_ado_ibmdadb2 - Win32 Release" /rebuild

    图 16 - 从命令行构建项目
    从命令行构建项目

分步指南 3:创建 Visual Basic ADO.NET 应用程序
下列步骤将使用 MS Visual Studio .NET 创建一个 Visual Basic ADO.NET 应用程序。

  1. 创建一个 Visual Basic .NET 项目:
    1. File菜单上,选择 New,然后选择 Project
    2. New Project对话框上,为 Project Types选择 Visual Basic Projects文件夹。为 Templates选择 Console Application 项目模板。在 NameLocation 下分别指定项目名和目录。新的 VB .NET 项目将包含两个 VB 文件(AssemblyInfo.vb 和 Module1.vb),而其 Solution Explorer 窗口将类似于 图 17所示。

    图 17 - 创建新的 Visual Basic .NET 项目
    创建新的 Visual Basic .NET 项目

  2. 复制并粘贴 VB .NET 示例应用程序。

    将其中一个 ADO.NET 示例应用程序(例如 dbConn_vb_adoNET_ibmdatadb2.vb)复制并粘贴到 Module1.vb 中。

    图 18 - 向项目添加 Visual Basic ADO.NET 示例应用程序
    向项目添加 Visual Basic ADO.NET 示例应用程序

  3. 添加对示例应用程序中所使用的类型库的引用:
    1. Project菜单上,选择 Add Reference
    2. Add Reference对话框上,切换到 .NET选项卡,向下滚动并选择 IBM.Data.DB2.dllMicrosoft Visual Basic .NET Runtime组件,然后单击 Select。现在, Selected Components下将看到这两个组件。单击 OK。如果其中没有列出这些组件,就单击 Browse 并从其所位于的目录进行选择。例如在我们的系统中:
      • IBM.Data.DB2.dll 位于 F:\\Program Files\\IBM\\SQLLIB\\BIN\\netf10
      • Microsoft.Data.Odbc.dll 位于 C:\\Program Files\\Microsoft.NET\\Odbc.Net
    3. Solution Explorer 窗口中,右击 Module1.vb 文件并选择 Rename。指定一个新的文件名(例如 dbConn_vb_adoNET_ibmdatadb2.vb)。 Solution Explorer 窗口将类似于 图 19所示。

    图 19 - 添加对类型库的引用
    添加对类型库的引用

  4. 设置项目的 Startup 对象:
    1. Solution Explorer 窗口中,右击该项目(例如 dbConn_vb_adoNET_ibmdadb2)并选择 Properties
    2. Property Pages对话框里 Common Properties文件夹下的 General 选项卡上,将 Sub Main选作 Startup Object

    图 20 - 设置项目的 Startup Object
    设置项目的 Startup Object

  5. 在 MS Visual Studio .NET IDE 里构建解决方案:
    1. File菜单上,选择 Save All
    2. Build菜单上,选择 Build Solution。这将在项目目录下的子目录 bin 中生成一个可执行文件。

    图 21 - 为项目创建可执行程序
    为项目创建可执行程序

  6. 从命令行创建可执行文件。

    您还可以从命令行为 Visual Basic .NET 项目创建可执行文件。在命令提示符后,输入:

    devenv /rebuild debug "<projectname>.sln"

    例如 devenv /rebuild debug "dbConn_vb_adoNET_ibmdatadb2.sln"

    图 22 - 从命令行构建项目
    从命令行构建项目

  7. 从命令行编译 Visual Basic .NET 文件。

    除了从 Visual Basic .NET 项目生成可执行文件,您还可以从命令行为 Visual Basic .NET 文件创建其可执行文件。在命令提示符后,输入:

    set tmpLibpath="F:\\Program Files\\IBM\\SQLLIB\\BIN\\netf10" set tmpReference=IBM.Data.DB2.dll,Microsoft.VisualBasic.dll,System.dll,System.Data.dll vbc /libpath:%tmpLibpath% /reference:%tmpReference% /target:exe < filename>.vb /main:ConnectDb

    例如 set tmpLibpath="F:\\Program Files\\IBM\\SQLLIB\\BIN\\netf10" set tmpReference=IBM.Data.DB2.dll,Microsoft.VisualBasic.dll,System.dll,System.Data.dll vbc /libpath:%tmpLibpath% /reference:%tmpReference% /target:exe dbConn_vb_adoNET_ibmdatadb2.vb /main:ConnectDb

    图 23 - 从命令行编译 Visual Basic .NET 文件
    从命令行编译 Visual Basic .NET 文件

分步指南 4:创建 Visual C# ADO.NET 应用程序
下列步骤将使用 MS Studio .NET 创建一个 Visual C# ADO.NET 应用程序。

  1. 创建一个 Visual C# .NET 项目:
    1. File菜单上,选择 New之后选择 Project
    2. New Project对话框上,为 Project Types选择 Visual C# Projects文件夹。并为 Templates选择 Console Application 项目模板。在 NameLocation 下分别指定项目名和目录。Solution Explorer 窗口将类似于 图 24所示。

    图 24 - 创建新的 Visual C# .NET 项目
    创建新的 Visual C# .NET 项目

  2. 复制并粘贴 VC# .NET 示例应用程序。

    将其中一个 VC# ADO.NET 示例应用程序(例如 dbConn_cs_adoNET_ibmdatadb2.cs)复制并粘贴到 Class1.cs 文件中。

    图 25 - 向项目添加 Visual C# ADO.NET 示例应用程序
    向项目添加 Visual C# ADO.NET 示例应用程序

  3. 添加对示例应用程序中所使用的类型库的引用:
    1. Solution Explorer 窗口中,右击该项目(例如 dbConn_cs_adoNET_ibmdadb2)并选择 Add Reference
    2. Add Reference对话框上,切换到 .NET选项卡,向下滚动并选择 IBM.Data.DB2.dll 组件后单击 Select。现在,在 Selected Components 下应该列出了该组件。单击 OK。如果其中没有列出该组件,就单击 Browse并从其所位于的目录进行选择。例如在我们的系统中:
      • IBM.Data.DB2.dll 位于 F:\\Program Files\\IBM\\SQLLIB\\BIN\\netf10
      • Microsoft.Data.Odbc.dll 位于 C:\\Program Files\\Microsoft.NET\\Odbc.Net
    3. Solution Explorer窗口中,右击 Class1.cs 文件并选择 Rename。指定一个新的文件名(例如 dbConn_cs_adoNET_ibmdatadb2.cs)。 Solution Explorer 窗口将类似于 图 26所示。

    图 26 - 添加对类型库的引用
    添加对类型库的引用

  4. 设置项目的 Startup 对象:
    1. Solution Explorer 窗口中,右击该项目(例如 dbConn_cs_adoNET_ibmdadb2)并选择 Properties
    2. Property Pages对话框里,在 Common Properties文件夹和 General 选项卡下,将 Sub Main选作 Startup Object

    图 27 - 设置项目的 Startup Object
    设置项目的 Startup Object

  5. 在 MS Visual Studio .NET IDE 里构建解决方案:
    1. File菜单上,选择 Save All
    2. Build菜单上,选择 Build Solution。这将在项目目录下的子目录 bin\\Debugbin\\Release中生成一个可执行文件。

    图 28 - 为项目创建可执行程序
    为项目创建可执行程序

  6. 从命令行创建可执行文件。

    您还可以从命令行为 Visual C# .NET 项目创建可执行文件。在命令提示符后,输入:

    devenv /rebuild debug "<projectname>.sln"

    例如 devenv /rebuild debug "dbConn_cs_adoNET_ibmdatadb2.sln"

    图 29 - 从命令行构建项目
    从命令行构建项目

  7. 从命令行编译 Visual C# .NET 文件。

    除了从 Visual C# .NET 项目生成可执行文件,您还可以从命令行为 Visual C# .NET 文件创建可执行文件。在命令提示符后,输入:

    set tmpReference="F:\\Program Files\\IBM\\SQLLIB\\BIN\\netf10\\IBM.Data.DB2.dll";System.dll;System.Data.dll csc /reference:%tmpReference% /target:exe <filename>.cs /main:ConnectDb

    例如 set tmpReference="F:\\Program Files\\IBM\\SQLLIB\\BIN\\netf10\\IBM.Data.DB2.dll";System.dll;System.Data.dll csc /reference:%tmpReference% /target:exe dbConn_cs_adoNET_ibmdatadb2.cs /main:ConnectDb

    图 30 - 从命令行编译 Visual C# .NET 文件
    从命令行编译 Visual C# .NET 文件

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有