内 容:1、当SqlDataReader没有关闭之前,数据库连接会一直保持open状态,所以在使用SqlDataReader时,使用完毕应该马上调用SqlDataReader.Close()关闭它。
2、一个连接只能被一个SqlDataReader使用,这也是为什么要尽早关闭SqlDataReader的原因。 3、使用完SqlDataReader后,你可以在程序中显示的调用数据库连接对象的Close方法关闭连接,也可以在调用Command对象的ExecuteReader方法时传递CommandBehavior.CloseConnection 这个枚举变量,这样在调用SqlDataReader的Close方法时会自动关闭数据库连接。 4、使用SqlDataReader时尽量使用和数据库字段类型匹配的方法来取得相应的值,比如对于整形的字段使用GetInt32,对字符类型的字段使用GetString。这样会减少因为类型不一致而额外增加的类型转换操作。 5、使用SqlDataReader获取多条记录时,如果没有访问到取出记录的末尾时想要关闭SqlDataReader,应该先调用Command对象的Cancel方法,然后再调用SqlDataReader的Close方法。Command对象的Cancel方法使得数据库不再把SqlDataReader中未访问的数据发送到调用端,如果不调用此方法直接关闭SqlDataReader,数据库会发送和SqlDataReader未访问数据等长的空数据流到调用端。 6、如果想通过SqlCommand的ExecuteReader方法获取存储过程的返回值或者输出参数,必须先调用SqlDataReader的Close方法后,才能获取输出参数的值或者返回值。 7、如果使用SqlDataReader只返回一条记录,那么在调用Command的ExecuteReader方法时,指定 CommandBehavior.SingleRow参数,这个参数的是否使用对SQL Server .NET Data Provider没有什么影响,但是当你使用OLE DB .NET Data Provider时,指定这个参数后,DataPrivider内部将使用IRow接口,而不是使用相对来说耗费资源的IRowSet接口。
public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params
SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); SqlConnection conn = new SqlConnection(connectionString); try { PrepareCommand(cmd, conn, null , cmdType, cmdText, commandParameters); // 给cmd.ExecuteReader加上参数CommandBehavior.CloseConnection会在cmd.ExecuteReader执行完后自动关闭与之相关联的conn SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; } catch { conn.Close(); throw ; } } |
详细解决方案
sqldatareader:使用SqlDataReader注意的几点
热度:90 发布时间:2023-12-13 17:07:16.0
相关解决方案
- SqlDataReader 获取的值替空
- DataTable.Load(SqlDataReader)和SqlDataAdapter.Fill()的区别,该怎么处理
- 存储过程带返回值(sqldatareader),该如何处理
- ASP.NET通过SqlCommand、SqlDataReader 读取数据库有关问题
- System.Data.SqlClient.SqlDataReader”未定义构造函数解决方法
- SqlDataReader reader= cmd1.ExecuteReader();' ' 附近有语法异常
- 大神:sqlDataReader 取到了值,还提示未将对象引用设置到对象的实例
- 无法将类型“System.Data.SqlClient.SqlDataReader”隐式转换为“int”,该怎么解决
- sqldatareader 取值有关问题
- ASP.NET 三成架构 SqlDataReader 有关问题
- sqldatareader 读取数据解决方法
- SqlDataReader 为什么返回不了小弟我修改后的数据?
- 无法将类型“System.Data.SqlClient.SqlDataReader”隐式转换为“System.Data.SqlClient.SqlDataAdapter”,该怎么处理
- 我来问个小有关问题,希望大家能帮助!SqlDataReader
- SqlDataReader 有关问题
- 了解SqlConnection,SqlCommand,SqldataReader
- sqldatareader:使用SqlDataReader注意的几点
- C#--ADO对于数据库的操作(Sqlcommmand、SqlConnection、Sqldatareader、SqlDataAdapter、Dataset