编写帮助器类以填充数据集

您刚为“客户”表创建的数据集模式是一个数据结构。在运行时,需要有代码将数据从数据库填充到数据集结构。在本节中,将创建对数据集填充数据的帮助器类。

创建用于对数据集填充数据的帮助器类

  1. 在“解决方案资源管理器”中,右击粗体显示的项目名,指向“添加”,然后单击“添加新项”。

  2. 在“添加新项”对话框的“Visual Studio 已安装的模板”列表中选择“类”。

  3. 在“名称”字段中,输入“DataSetConfiguration”然后单击“添加”。

    Note注意

    如果出现对话框,提示是否要将类放置在名为“Code”的目录中,请单击“是”。

  4. 在类顶部的类签名之上,为 System.Data 和 System.Data.OleDb 命名空间添加 "Imports"[Visual Basic] 或 "using"[C#] 声明。

    Imports System.Data
    Imports System.Data.OleDb
    
    using System.Data;
    using System.Data.OleDb;
    
  5. 在类的顶部,创建名为 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";
```
  1. 在第一个常量下方,创建名为 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";
```
  1. 在第二个常量下方,创建名为 DATATABLE_NAME 的第三个常量,用于保存在数据集中填充的 DataTable 的名称。
下面的步骤将指导您创建一个 DIRECTORY\_FILE\_PATH 常量。只有在 Visual Studio 2005 中创建网站时,才需要此常量。否则,请跳过此步。

``` vb
Private Const DATATABLE_NAME As String = "Customer"
```

``` csharp
private const string DATATABLE_NAME = "Customer";
```
  1. 在第三个常量下面,创建名为 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\";
```

创建填充数据集的属性

  1. 创建名为 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
{

}
}
```
  1. 此步骤具有两个选项:一个用于强类型的 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");
      
  2. 声明并实例化 OleDbConnection 类,并把 CONNECTION_STRING 常量作为方法参数传递给它。

    Dim myOleDbConnection As OleDbConnection = New OleDbConnection(CONNECTION_STRING)
    
    OleDbConnection oleDbConnection = new OleDbConnection(CONNECTION_STRING);
    
  3. 声明并实例化 OleDbDataAdapter 类,并把 QUERY_STRING 常量和 OleDbConnection 实例作为方法参数传递给它。

    Dim myOleDbDataAdapter As OleDbDataAdapter = New OleDbDataAdapter(QUERY_STRING, myOleDbConnection)
    
    OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter(QUERY_STRING, oleDbConnection);
    
  4. 调用 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);
```
  1. 为了完成属性,返回数据集实例。
``` vb
Return myDataSet
```

``` csharp
return dataSet;
```

CustomerDataSet 属性已创建完毕,可从项目中任何地方调用。