教程连接到 IDataReader.doc_第1页
教程连接到 IDataReader.doc_第2页
教程连接到 IDataReader.doc_第3页
教程连接到 IDataReader.doc_第4页
教程连接到 IDataReader.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

教程:连接到 IDataReader简介许多 .NET 项目使用 DataReader 而不是 DataSet 来检索数据。例如,将控件(例如,GridView 控件)绑定到数据的一种典型方法是:创建一个通过 DataReader 检索数据的方法,然后通过 IDataReader 接口从此方法返回检索数据。在 Crystal Reports for Visual Studio 中,如果满足以下特定条件,嵌入式 Crystal Reports 设计器就可以访问 IDataReader: 数据必须通过 IDataReader 接口从一个方法中返回。 方法中使用的数据提供程序必须是 OleDb .NET 数据提供程序。注意此数据提供程序的类位于 System.Data.OleDb 命名空间中。 方法必须是共享 Visual Basic 或静态 C#。 包含此方法的类必须是类库项目的一部分,并且被编译到一个程序集中。在本教程中,您将学习如何将 Crystal 报表连接到 DLL 程序集文件,以及如何访问程序集内的类和返回 IDataReader 的静态方法。要开始,请创建一个类库,添加一个类和一个返回 IDataReader 的静态方法,然后将该类库编译到程序集中。示例代码此教程附带 Visual Basic 和 C# 示例代码,这些代码显示了项目完成后的版本。请按照本教程中的说明创建新项目或打开示例代码项目,以利用完成后的版本进行工作。示例代码保存在按语言和项目类型分类的文件夹中。各示例代码版本的文件夹名称如下: C# 网站:CS_Web_Data_IDataReader C# Windows 项目:CS_Win_Data_IDataReader Visual Basic 网站:VB_Web_Data_IDataReader Visual Basic Windows 项目:VB_Win_Data_IDataReader欲知包含这些示例的文件夹的位置,请参见“教程的示例代码目录”。创建类库使用本教程之前,必须进行以下设置。数据库设置准备工作1. SQL Server 配置:o 如果安装了 SQL Server(或其 OEM 版本:MSDE),则必须配置为要求 SQL Server 身份验证。o 如果未安装 SQL Server(或其 OEM 版本:MSDE),则必须安装 MSDE,并将 SQL Server 身份验证设置为 True。2. 必须安装 SQL Server 附带的 Northwind 数据库,并确认该数据库要求 SQL Server 身份验证。3. 必须创建受限访问帐户以在网站内使用。创建包含返回 IDataReader 的静态方法的类库若要安装使用 SQL Server 身份验证的 MSDE 或 Northwind 数据库,请从本文档中的“系统设置”部分转至以下各节: “使用 Windows or SQL Server 身份验证的 MSDE 安装” “Northwind 数据库安装” “安全性:创建受限访问数据库帐户”一旦配置好了 SQL Server 和 Northwind 数据库,就可以创建从 Northwind 数据库返回值(作为 IDataReader)的类库了。注意本教程使用 Northwind 数据库和 SQL Server,但您可以使用任何与 OleDb 兼容的数据库。1. 从“文件”菜单中,指向“新建”,然后单击“项目”。2. 在“新建项目”对话框的“项目类型”列表中为 C# 或 Visual Basic 选择语言文件夹。3. 从“模板”列表中,单击“类库”。4. 在“名称”字段中,将默认项目名称替换为VB_Lib_DataLayer Visual Basic或CS_Lib_DataLayer C#,然后单击“确定”。5. 在“解决方案资源管理器”中,右击默认类(Class1),然后单击“删除”。6. 在“解决方案资源管理器”中,右击用粗体显示的项目名,指向“添加”,然后单击“类”。7. 在“添加新项”对话框的“模板”视图中,选择名为“类”的模板。8. 在“名称”字段中,键入“DataCenter”,然后单击“添加”。9. 如果使用的是 Visual Basic,请在类的顶部键入Option Strict On。10. 如果还没有声明 System.Data 和 System.Data.OleDb 命名空间,则在类签名之上,向类顶部为这些命名空间添加Imports Visual Basic或using C#声明。VBImports System.DataImports System.Data.OleDb11. 在类级别,为 OleDb 连接字符串创建一个专用字符串常量。注意出于安全性考虑,使用访问权限受到限制的数据库帐户非常重要。有关更多信息,请参见“安全性:创建受限访问数据库帐户”。12. 在编写的代码中,请将示例服务器名称 DBServer01 和示例密码 1234(如下所示)替换为您的数据库的服务器名称和密码。13. VB14.15. Private Const OLEDB_CONNECTION_STRING As String =16. provider=sqloledb;Data Source=DBSERVER01;Initial17. Catalog=Northwind;User Id=limitedPermissionAccount;Password=123418.19. 为数据库查询创建第二个专用字符串常量。VBPrivate Const CUSTOMER_TABLE_QUERY As String = SELECT CustomerID,CompanyName, ContactName, Address, City FROM Customers20. 创建一个返回 IDataReader 名为GetCustomersUsingOleDb()的Shared Visual Basic或static C#公用方法。VBPublic Shared Function GetCustomersUsingOleDb() As IDataReaderEnd Function21. 在此方法中,声明并实例化 OleDbConnection 并传递 OLEDB_CONNECTION_STRING 常量。VBDim myOleDbConnection As OleDbConnection = NewOleDbConnection(OLEDB_CONNECTION_STRING)22. 从 OleDbConnection 实例调用Open()方法以打开数据库连接。VBmyOleDbConnection.Open()23. 声明并实例化 OleDbCommand 并传递 CUSTOMER_TABLE_QUERY 常量和 OleDbConnection 实例。VBDim myOleDbCommand As OleDbCommand = NewOleDbCommand(CUSTOMER_TABLE_QUERY, myOleDbConnection)24. 调用 OleDbCommand 实例的ExecuteReader()方法,并将其传递到 IDataReader 的实例。VBDim myIDataReader As IDataReader = myOleDbCommand.ExecuteReader()25. 从该方法中返回IDataReader实例。VBReturn myIDataReader26. 从“生成”菜单中,单击“生成解决方案”。27. 从“文件”菜单中,单击“关闭解决方案”。将报表连接到 IDataReader 静态方法在本节中,您将创建一个访问已编译程序集中的 IDataReader 的客户端项目。将报表连接到 IDataReader 静态方法此过程仅适用于已通过“项目设置”创建的项目。“项目设置”包含此过程需要的特定命名空间引用和代码配置。如果没有该配置,将无法完成此过程。因此,在开始此过程之前,必须首先执行“项目设置”中的步骤。1. 在“解决方案资源管理器”中,右击粗体显示的项目名,指向“添加”,然后单击“新建项”。2. 在“添加新项”对话框中,选择“Crystal 报表”。3. 在“名称”字段中,输入“CustomersViaIDR.rpt”,然后单击“确定”。4. 在“Crystal Reports 库”对话框中,单击“确定”。5. 在“标准报表创建向导”对话框中,展开“创建新连接”节点。6. 展开“ADO.NET”节点。7. 在“ADO.NET”对话框中,单击“文件路径”文本字段末尾的“.”。8. 在“打开”对话框中,将“文件类型”列表设置为“所有文件”。9. 从下面的文件目录路径中找到 DLL 程序集。注意DLL 程序集是在“创建类库”过程中创建的。在 Visual Basic 中,DLL 位于 bin 目录中。在 C# 中,DLL 位于名为 Debug 的 bin 子目录中。在此指定的位置将根据所使用的 Visual Studio 版本的不同而发生变化。10. C#11. VB12.13. My DocumentsVisual StudioProjectsVB_Lib_IDataReaderVB_Lib_IDataReaderbinVB_Lib_DataLayer.dll14.15. 选择 DLL,然后单击“打开”。16. 从“类名”类别中,选择“DataCenter”类,然后单击“完成”。在“可用数据源”区域,GetCustomersUsingOleDB() 方法将会出现。17. 选择“GetCustomersUsingOleDb”,单击“”按钮,以将该方法移入“选定的表”面板,然后单击“下一步”。如果还未正确配置 IDataReader 类库,则会引发异常。处理异常在本节中,将学习如何处理可能会由类库 IDataReader 方法引发的异常。1. 关闭网站或 Windows 项目,然后重新打开包含 IDataReader 静态方法的类库项目。注意类库项目是在“创建类库”中创建的,其名称为VB_Lib_DataLayer Visual Basic或CS_Lib_DataLayer C#。2. 查看连接字符串常量以检查数据库服务器名称或密码中的错误。3. 查看查询字符串常量以检查查询中的错误。4. 从“生成”菜单中,单击“生成解决方案”。5. 从“文件”菜单中,单击“关闭解决方案”。6. 重新打开网站或 Windows 项目。7. 删除已创建的 Crystal 报表文件,然后创建一个新的 Crystal 报表。8. 重复上一节“将报表连接到 IDataReader 静态方法”中的步骤。GetCustomersUsingOleDb()方法已成功传送到“选定的表”面板中。注意如果仍收到异常,请重复调试过程。要进一步调试,请在网站或 Windows 项目中创建一个新的 Web 窗体或 Windows 窗体,并给该窗体添加一个GridView控件。在代码隐藏类中,将GridView控件的DataSource属性设置为IDataReader静态方法。然后,编译并查看该 Web 窗体或 Windows 窗体以确定显示是否成功。根据来自 IDataReader 静态方法的值设计报表现在,您已准备好根据来自 IDataReader 静态方法的值设计报表。注意此过程假定您已成功访问了 GetCustomersUsingOleDb IDataReader 静态方法,因此,该方法已经传送到“标准报表创建向导”对话框的“选定的表”面板中。1. 在“可用字段”面板中,展开“GetCustomersUsingOleDb”。2. 按下 Ctrl 并单击CompanyName、ContactName和City。3. 单击“”符号,将这些字段移至“要显示的字段”面板,然后单击“下一步”。4. 在“可用字段”面板的“报表字段”下,选择GetCustomerUsingOleDb.City,并单击符号将该字段移动到“分组依据”面板中,然后单击“完成”。CustomersViaIDR 报表已创建,并已加载到 Visual Studio 的主窗口中。5. 单击“主报表预览”以预览基于对“IDataReader”静态方法的调用的报表。现在,可以将报表绑定到CrystalReportViewer控件了。绑定报表在“项目设置”中,已经在 Web 或 Windows 窗体上放入了CrystalReportViewer控件。在上一步中,已给项目添加了 CustomersViaIDR 报表。在本节中,将实例化 CustomersViaIDR 报表,并将其绑定到CrystalReportViewer控件。可以采用两种方式实例化并绑定报表: 作为嵌入式报表。 作为非嵌入式报表。从下面的过程中选择一个(不要两者都选)。 如果使用嵌入式报表,请按照下一个过程将 CustomersViaIDR 报表实例化为嵌入式报表。 如果使用非嵌入式报表,请按照第二个过程将 CustomersViaIDR 报表实例化为非嵌入式报表。将 CustomersViaIDR 报表实例化为嵌入式报表并将其绑定到 CrystalReportViewer 控件1. 打开 Web 或 Windows 窗体。2. 从“视图”菜单中,单击“代码”。3. 使用变量名 customersViaIdrReport,为 CustomersViaIDR 报表包装类添加新的类级声明。将其访问修饰符设置为 private。VBPrivate customersViaIdrReport As CustomersViaIDR4. 在ConfigureCrystalReports()方法中,实例化该报表包装类。注意已在“项目设置”中创建了ConfigureCrystalReports()方法。5. VB6.7. customersViaIdrReport = New CustomersViaIDR()8.9. 在报表实例化代码下面的一行中,将 CrystalReportViewer 控件的 ReportSource 属性绑定到经过实例化的报表类(变量名:customersViaIdrReport)。VBmyCrystalReportViewer.ReportSource = customersViaIdrReport将 CustomersViaIDR 报表实例化为非嵌入式报表并将其绑定到 CrystalReportViewer 控件现在即可生成并运行项目。跳到下一节。1. 打开 Web 或 Windows 窗体。2. 从“视图”菜单中,单击“代码”。3. 使用变量名 customersViaIdrReport,为 ReportDocument 报表包装类添加新的类级声明。将其访问修饰符设置为 private。注意ReportDocument 类是CrystalDecisions.CrystalReports.Engine命名空间的成员。已在Imports Visual Basic中为此命名空间添加了using C#或“项目设置”声明。在实例化ReportDocument并将报表加载到命名空间时,即通过 SDK 获取了对报表的访问,而不必嵌入报表。4. VB5.6. Private customersViaIdrReport As ReportDocument7.8. 在ConfigureCrystalReports()方法(在“项目设置”中创建)中,实例化 ReportDocument 类。VBcustomersViaIdrReport = New ReportDocument()9. 声明一个字符串变量,将其命名为“reportPath”,然后将一个本地报表的运行时路径赋值给它。对于网站项目和 Windows 项目,确定此路径时会有所不同:o 对于网站,要将本地报表文件的名称作为字符串参数传递到Server.MapPath()方法中。这样,在运行时本地报表就会映射到硬盘文件目录路径。VBDim reportPath As String = Server.MapPath(CustomersViaIDR.rpt)o 对于 Windows 项目,要将Application.StartupPath属性与一个反斜杠和本地报表文件名称连接起来。这样,报表将映射到与 Windows 可执行文件相同的目录。注意编译时,需要将报表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论