日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#数据库訪问返回值类型为SqlDataReader时使用using时注意的问题

發(fā)布時間:2023/12/10 C# 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#数据库訪问返回值类型为SqlDataReader时使用using时注意的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主同意不得轉(zhuǎn)載。

https://blog.csdn.net/u010512579/article/details/24011761

在封裝通用?SQLSERVER?數(shù)據(jù)可訪問方法時,假設(shè)返回值類型為?SqlDataReader?,那么在創(chuàng)建連接字符串的時候。我們不能寫成例如以下

?public?static??SqlDataReader?ExecuteReader(string?strSQL)

????????{

????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString))

{

????????????using?(SqlCommand?cmd?=?new?SqlCommand(strSQL,?connection))

????????????{

????????????????try

????????????????{

????????????????????connection.Open();

????????????????????SqlDataReader?myReader?=?cmd.ExecuteReader(CommandBehavior.CloseConnection);

????????????????????return?myReader;

????????????????}

????????????????catch?(System.Data.SqlClient.SqlException?ex)

????????????????{

????????????????????throw?new?Exception(ex.Message);

????????????????}

????????????}

????????}

}

你在使用using創(chuàng)建的時候,在SqlDataReader?賦值后return時,SqlConnection?就會被釋放資源,連接就會被關(guān)閉。而我們傳遞過去的SqlDataReader?是引用類型,接收傳遞過去的SqlDataReader?的地方調(diào)用的時候,就會提示連接已經(jīng)被關(guān)閉。無法調(diào)用,由于??using?(SqlConnection?connection?=?new?SqlConnection(connectionString))在方法結(jié)束時,就把資源釋放了,并關(guān)閉了連接。為了正常接收傳遞過去的SqlDataReader?。在創(chuàng)建連接的時候不能用using,正確的寫法例如以下

?

?public?static??SqlDataReader?ExecuteReader(string?strSQL)

????????{

????????????SqlConnection?connection?=?new?SqlConnection(connectionString);

????????????using?(SqlCommand?cmd?=?new?SqlCommand(strSQL,?connection))

????????????{

????????????????try

????????????????{

????????????????????connection.Open();

????????????????????SqlDataReader?myReader?=?cmd.ExecuteReader(CommandBehavior.CloseConnection);

????????????????????return?myReader;

????????????????}

????????????????catch?(System.Data.SqlClient.SqlException?ex)

????????????????{

????????????????????throw?new?Exception(ex.Message);

????????????????}

????????????}

????????}

轉(zhuǎn)載于:https://www.cnblogs.com/xfgnongmin/p/10642901.html

總結(jié)

以上是生活随笔為你收集整理的c#数据库訪问返回值类型为SqlDataReader时使用using时注意的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。