一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

SqlDataReader 学习笔记与常见应用问题

时间:2010-12-29 编辑:简简单单 来源:一聚教程网

sqldatareader转换成string有空格问题         相信很多朋友在做数据库教程字段和textbox.text属性里值比较时,把读取出来的sqldatareader对象转换成string,发现就算是同一个值也不会产生相等结果,用断点方法查看结果,原来sqldatareader转换成string后,会用空格补齐字段类型大小,最后通过string的trim()函数,去掉空格才可以进行对比。这是由于数据库使用nvhar类型,当写入的值比规定的值小时将用空格填满,所以大家要注意去除空格问题。


提供一种从 sql server 数据库读取行的只进流的方式。无法继承此类。

命名空间:system.data.sqlclient
程序集:system.data(在 system.data.dll 中)

声明

public class sqldatareader
 inherits dbdatareader
 implements idatareader, idisposable, idatarecord


'用法

dim instance as sqldatareader

 j# 
复制

public class sqldatareader extends dbdatareader implements idatareader, idisposable,
 idatarecord

使用sqldatareader问题

第一个问题,datareader的read()方法是顺序读取,这个可以参照指针,一开始指针是指向datareader的头部,但是那里并没有数据,reader中的数据从下一个地址开始,如果要取得数据需要一次次用read()来取。
第二个问题,hasrows是返回datareader中是否包含一个或多个结果,如果有那就可以直接告诉程序这个部门已经存在。
这里要理解的是,datareader中的数据不管有几条,他都是存在的,就像是你站在一个队伍前,看到的始终是第一个人,如果他不走开,你看不到下一个人,但是队伍的人数不会因为你看不到而改变。

应用实例

public static sqldatareader executereader(string str) 

     using(sqlconnection conn=new sqlconnection()) 
     { 
           try 
           { 
                 conn = createconnection(); 
                 if (conn.state == connectionstate.closed) conn.open(); 
                 sqlcommand cmd = new sqlcommand(str, conn); 
                  
            sqldatareader reader = cmd.executereader(commandbehavior.closeconnection); 
            return reader; 
            
           } 
           catch 
           { 
                 conn.close(); 
           } 
     }       
            


sqldatareader可以认为一个forward only 的curosor.它不像dataset是断开式的数据链接。它一直占用 connection [也就是一直保存链接]

热门栏目