`
ajuanlong
  • 浏览: 107755 次
社区版块
存档分类
最新评论

当SqlDataReader.Read()少一条记录时

 
阅读更多

SqlDataReader是c#里面针对读取SQLserver数据的一种很好用、效率很高的方式。SqlDataReader.Read()将数据库中的数据,保存至一个结果集中result中。

利用read()方法,可以遍历当前结果集(每一条)记录;利用NextResult读取下一个结果集。

当用while(SqlDataReader.Read())处理结果集的数据时,有时会发生少一条记录的情况,我们需要检查一下以往是否已经用过SqlDataReader.Read()这个方法了,因为read方法类似next指针,读完一条记录自动转移到下一条记录。看一段代码:SqlDataReader读取数据库符合要求的2条记录。

这里用while(SqlDataReader.Read())循环依次读取记录,并将结果存至txtBox和字符串中,但运行结果只有第一个txtBoxNo1和第一个字符串data1被赋值,少了一条记录。原因就是在前面有一个判断是否有符合条件数据的语句:

因此导致有一条记录已被读取,而再次用Read方法时,已经从第2条记录开始读取了。- -!

我们加以改造,判断是否有数据,还有另一种方法,就是HasRows。

好了,运行开始,运行结果显示有2条记录,2个文本框和字符串被依次赋值,没问题了。

总结:(1)用HasRows代替Read方法,防止再次利用Read方法时从第2条记录开始读取。(2)程序员起初的想法很美好,但问题总会有,So,没有问题或经过调试后没有问题是程序员最美好的想法。





分享到:
评论

相关推荐

    c# 取上一条记录,下一条记录

    - 需要处理可能出现的空结果情况,即当没有上一条或下一条记录时。 总结,通过C#结合ADO.NET,我们可以方便地获取数据库记录的上一条或下一条。关键在于正确设置SQL查询并利用数据游标来移动记录。同时,注意...

    如何实现上一条、下一条的功能

    实现“上一条”和“下一条”功能的核心在于能够根据当前记录的ID找到前一条和后一条记录的ID。 ##### 1. SQL查询实现 对于SQL查询来说,主要通过比较ID来找到前一条和后一条记录: ```sql -- 查询当前记录 SELECT...

    使用导航条浏览数据库记录 编程小实例,

    假设每页显示10条记录,你可以这样构建SQL查询: ```cpp string query = "SELECT * FROM TableName OFFSET @offset ROWS FETCH NEXT @limit ROWS ONLY"; cmd.Parameters.AddWithValue("@offset", currentPage * ...

    C# 用SQL自动记录数据并且查询出某一列有哪些重复数据

    本主题聚焦于如何在C#中利用SQL来自动记录数据,并查询出某一列中的重复数据。以下将详细讲解这一过程,以及相关知识点。 首先,我们需要理解C#和SQL的基础。C#是一种面向对象的编程语言,广泛应用于开发Windows...

    VB.NET+SQL数据库实现数据的修改添加删除及照片上传下载

    删除一条记录: ```csharp Dim deleteCommand As New SqlCommand("DELETE FROM Students WHERE ID = @ID", connection) deleteCommand.Parameters.AddWithValue("@ID", 1) deleteCommand.ExecuteNonQuery() ``` ...

    编程备查ASPNET编译执行常见错误及解决方法53条汇总[总结].pdf

    当试图从SqlDataReader读取数据但没有数据记录时,会出现此错误。解决方法是在访问数据前先检查reader.Read(),确保存在数据。 3. 数据为空,不能对空值调用此方法或属性 如果数据库字段值为空,直接调用对象的...

    C# 对SqlServer中Image字段的读写(例子)

    - 当`SqlDataReader`移动到第一条记录时,使用`GetBytes`方法读取`Image`字段的二进制数据。 3. **将二进制数据转换为图片** - 创建一个新的`MemoryStream`,用从数据库读取的字节数组初始化。 - 使用`Image....

    C#移动数据库记录

    在上述代码中,`reader.Read()`方法用于移动记录指针到下一条记录,而`reader.HasRows`则用来判断是否还有剩余记录。如果需要向上移动记录,可以使用`reader.PreviousRow()`(此方法不适用于`SqlDataReader`,但某些...

    C#对数据库记录进行排序查询

    每条记录被表示为一个ListViewItem,其子项(SubItems)对应于记录的各个字段。 总的来说,C#对数据库记录进行排序查询涉及了数据库查询语言、数据访问技术以及UI组件的使用。通过理解并熟练掌握这些技术,开发者...

    下载的试题\数据库访问技术(ADO[1].NET)A卷(十二周).doc

    - **Read方法**:`SqlDataReader`对象中的方法,用于移动到结果集中的下一条记录。 - 示例代码: ```csharp while (reader.Read()) { // 处理当前记录 } ``` #### 10. 删除记录 - **Delete方法**:`...

    使用TimeStamp控制并发问题示例

    Timestamp的基本原理是为每条记录分配一个时间戳,当用户尝试更新记录时,系统会检查当前记录的时间戳是否与用户拥有的时间戳相同。如果相同,说明没有其他用户修改过该记录,更新可以继续;如果不相同,则表示有...

    一些很好的数据库

    循环遍历每一条记录,获取字段值并填充到自定义的`ProvinceItem`对象中,最后将这些对象添加到`ComboBox`控件中供用户选择。 ### 3. ComboBox控件的应用 #### 3.1 cboProvince控件 ```csharp private void ...

    C#中的经典代码.docx

    要删除表中的一条记录,可以按照以下方式编写代码: ```csharp // 连接字符串 SqlConnection conn = new SqlConnection("DataSource=.;Initial Catalog=数据库名称;Integrated Security=True"); try { conn....

    C操作数据库总结.doc

    类似于方法一,但更简洁,使用`ExecuteScalar`直接获取第一条记录的主键值: ```csharp string snum = tBstudentnum.Text.Trim(); string str = "SELECT * FROM Student WHERE studentnum='" + snum + "'"; ...

    C#操作SQLserver和oracle数据库全总结.docx

    - `ExecuteScalar()`:返回第一条记录的第一列,通常用于单值查询,结果需强制类型转换。 - `ExecuteReader()`:返回`SqlDataReader`对象,可用于遍历所有记录,适用于查询多条记录。 - `ExecuteNonQuery()`:...

    c#连接SQL数据库的使用方法.docx

    为了从数据库中获取一条记录,可以使用 `SqlCommand` 类结合 `ExecuteScalar` 方法。例如,下面的代码演示了如何查询 `jobs` 表中记录的数量。 ```csharp using System.Data; using System.Data.SqlClient; string...

    NextResult

    当你调用`ExecuteReader`方法执行查询后,第一次调用`Read`方法会返回第一个结果集的第一条记录,然后可以通过`NextResult`方法来访问后续的结果集。这样可以有效地处理那些返回多个数据表或者查询结果的复杂SQL语句...

    C#数据库软件编程基础

    例如,插入一条新记录: ```csharp command.CommandText = "INSERT INTO MyTable VALUES(@Value1, @Value2)"; command.Parameters.AddWithValue("@Value1", "Value1"); command.Parameters.AddWithValue("@Value...

    C#使用SQL DataReader访问数据的优点和实例

    7. Read 方法:读取下一条记录。 在实际应用中,我们可以使用 DataReader 对象来读取和处理大量数据,以提高应用程序的性能和效率。 例如,在上面的实例中,我们可以使用 DataReader 对象来读取 mytable01 表中的...

    Change-Password-LOGIN.rar_Change

    // 读取第一条记录,验证密码 reader.Read(); string storedHash = reader.GetString(reader.GetOrdinal("PasswordHash")); bool isValid = ValidatePassword(password, storedHash); // 自定义验证函数 if (is...

Global site tag (gtag.js) - Google Analytics