在C#编程中,ADO.NET是用于访问数据库的关键技术,其中`DataReader`是高效的数据读取器,适用于处理大量数据。本章通过一个综合案例详细介绍了如何使用`DataReader`从数据库中读取数据并将其显示在列表框(ListBox)中。 在案例9.1中,我们看到一个使用ADO.NET `DataReader`从NorthWind数据库的`产品`表中加载数据到列表框的过程。定义了连接字符串`connS`,然后构建SQL查询语句`sqlStr`,选择`产品ID`和`产品名称`这两列。接着,创建`SqlCommand`对象`cmd`,设置其连接和命令文本,打开数据库连接,并执行查询。`ExecuteReader()`方法执行SQL查询返回一个`SqlDataReader`对象,它按顺序提供结果集。 在读取数据时,使用`while`循环遍历`dataReader`,并把`产品名称`添加到列表框`listBox1`中。这里需要注意,`dataReader`使用索引或列名来获取值,因此正确的方式是使用`dataReader["产品名称"]`,而不是`dataReader.Item("产品名称")`,因为`Item`属性在C#中表示索引器,而`dataReader`不支持列名作为索引。 然而,这种方法存在一个问题,如果产品名称有重复,列表框中无法区分同一产品名称对应的不同记录。为了解决这个问题,可以创建一个新的自定义类`ListItemNum`,包含两个属性:`MainValue`存储产品名称,`ID`存储主键产品ID。这样,当添加到列表框时,我们可以创建`ListItemNum`对象并将它们添加进去,这样每个列表项不仅有名称,还有其对应的唯一ID。 `ListItemNum`类包含两个私有变量`mainValue`和`id`,以及对应的公共属性`MainValue`和`ID`,带有读写访问器(getter和setter)。此外,还重写了`ToString()`方法,以便在列表框中显示`MainValue`,而不是整个对象的表示。这样,即使产品名称相同,通过`ID`仍能确保列表框中的每一项都能准确地映射到数据库中的特定记录。 通过这个综合案例,初学者能够了解到如何使用C#和ADO.NET进行数据库交互,以及如何处理数据加载过程中的潜在问题,如数据唯一性标识。这种实践性的学习对于理解C#数据库编程的基本概念至关重要。
剩余47页未读,继续阅读
- 粉丝: 23
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助