您刚为“客户”表创建的数据集模式是一个数据结构。在运行时,需要有代码将数据从数据库填充到数据集结构。在本节中,将创建对数据集填充数据的帮助器类。
创建用于对数据集填充数据的帮助器类
在“解决方案资源管理器”中,右击粗体显示的项目名,指向“添加”,然后单击“添加新项”。
在“添加新项”对话框的“Visual Studio 已安装的模板”列表中选择“类”。
在“名称”字段中,输入“DataSetConfiguration”然后单击“添加”。
注意如果出现对话框,提示是否要将类放置在名为“Code”的目录中,请单击“是”。
在类顶部的类签名之上,为 System.Data 和 System.Data.OleDb 命名空间添加 "Imports"[Visual Basic] 或 "using"[C#] 声明。
Imports System.Data Imports System.Data.OleDbusing System.Data; using System.Data.OleDb;在类的顶部,创建名为 CONNECTION_STRING 的常量,以保存指向 Xtreme 示例数据库的连接字符串。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>以下代码使用 Crystal Reports for Visual Studio 2005 的示例数据库位置。要确保指向 xtreme.mdb 数据库的文件目录路径正确,请参见 <a href="ms225530(v=vs.90).md">“Xtreme 示例数据库的位置”</a>。</p></td>
</tr>
</tbody>
</table>
``` vb
Private Const CONNECTION_STRING As String ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio 8\Crystal Reports\Samples\En\Database\xtreme.mdb"
```
``` csharp
private const string CONNECTION_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Program Files\\Microsoft Visual Studio 8\\Crystal Reports\\Samples\\En\\Database\\xtreme.mdb";
```
- 在第一个常量下方,创建名为 QUERY_STRING 的第二个常量,以保存数据库查询字符串。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>这个简单的查询字符串无条件地选择所有列。对于 Xtreme 示例数据库,它只会返回少量的数据。但是在大多数情况下,建议您通过包含 WHERE 子句并选择有限数量的列,来限制查询。</p></td>
</tr>
</tbody>
</table>
``` vb
Private Const QUERY_STRING As String = "SELECT * FROM CUSTOMER"
```
``` csharp
private const string QUERY_STRING = "SELECT * FROM CUSTOMER";
```
- 在第二个常量下方,创建名为 DATATABLE_NAME 的第三个常量,用于保存在数据集中填充的 DataTable 的名称。
下面的步骤将指导您创建一个 DIRECTORY\_FILE\_PATH 常量。只有在 Visual Studio 2005 中创建网站时,才需要此常量。否则,请跳过此步。
``` vb
Private Const DATATABLE_NAME As String = "Customer"
```
``` csharp
private const string DATATABLE_NAME = "Customer";
```
- 在第三个常量下面,创建名为 DIRECTORY_FILE_PATH 的第四个常量,以引用 xsd 文件的目录路径位置。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>下面的代码演示了网站的路径。</p></td>
</tr>
</tbody>
</table>
``` vb
Private Const DIRECTORY_FILE_PATH As String = "C:\WebSites\VB_Web_Data_DataSets\"
```
``` csharp
private const string DIRECTORY_FILE_PATH = @"C:\WebSites\CS_Web_Data_DataSets\";
```
创建填充数据集的属性
- 创建名为 CustomerDataSet 的只读属性,它返回数据集的实例。对方法给定 "Shared"[Visual Basic] 或 "static"[C#] 修饰符,使类和属性无需实例化就可被直接调用。
``` vb
Public Shared ReadOnly Property CustomerDataSet() As DataSet
Get
End Get
End Property
```
``` csharp
public static DataSet CustomerDataSet
{
get
{
}
}
```
此步骤具有两个选项:一个用于强类型的 DataSet 类(可用于 Windows 项目)。另一个用于一般 DataSet 类(可用于网站)。
对于使用强类型 DataSet 类的 Windows 项目,在 CustomerDataSet 属性的 get 子句中,声明并实例化 CustomerDataSetSchema 类(在前一节中从数据集模式生成的强类型 DataSet 类)。
Dim myDataSet As CustomerDataSetSchema = New CustomerDataSetSchema()CustomerDataSetSchema dataSet = new CustomerDataSetSchema();对于使用一般 DataSet 类的网站项目,在 CustomerDataSet 属性的 get 子句中,声明并实例化 DataSet 类,然后将 XML 模式应用到数据集实例。也就是说,将 CustomerDataSetSchema.xsd 的目录文件路径作为字符串参数传递到数据集实例的 ReadXmlSchema() 方法。
Dim myDataSet As DataSet = New DataSet() myDataSet.ReadXmlSchema(DIRECTORY_FILE_PATH & "XMLSchema.xsd")DataSet dataSet = new DataSet(); dataSet.ReadXmlSchema(DIRECTORY_FILE_PATH + "XMLSchema.xsd");
声明并实例化 OleDbConnection 类,并把 CONNECTION_STRING 常量作为方法参数传递给它。
Dim myOleDbConnection As OleDbConnection = New OleDbConnection(CONNECTION_STRING)OleDbConnection oleDbConnection = new OleDbConnection(CONNECTION_STRING);声明并实例化 OleDbDataAdapter 类,并把 QUERY_STRING 常量和 OleDbConnection 实例作为方法参数传递给它。
Dim myOleDbDataAdapter As OleDbDataAdapter = New OleDbDataAdapter(QUERY_STRING, myOleDbConnection)OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter(QUERY_STRING, oleDbConnection);调用 OleDbDataAdapter 实例的 Fill() 方法,并对其传递 CustomerDataSetSchema 实例和 DATATABLE_NAME 常量。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Fill() 方法在数据集实例中用从数据库检索到的数据填充指定的 DataTable。</p></td>
</tr>
</tbody>
</table>
``` vb
myOleDbDataAdapter.Fill(myDataSet, DATATABLE_NAME)
```
``` csharp
oleDbDataAdapter.Fill(dataSet, DATATABLE_NAME);
```
- 为了完成属性,返回数据集实例。
``` vb
Return myDataSet
```
``` csharp
return dataSet;
```
CustomerDataSet 属性已创建完毕,可从项目中任何地方调用。