亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

已有打開的與此命令相關聯的DataReader,必須首先將它關閉。對于此異常的理解

2024-07-10 13:24:17
字體:
來源:轉載
供稿:網友
首先聲明以下幾點:
1、也許講解有點初級,希望高手不要“噴”我,因為我知道并不是每一個人都是高手,我也怕高手們說我裝13;
2、如有什么不對的地方,還希望大家指出,一定虛心學習;
3、本文屬于作者原創,尊重他人勞動成果,轉載請注明作者,謝謝。
下面開講:
  開始在遇到此問題的時候我也在網上查了很多資料,貌似沒找到什么好的解決方法,然后我就開始調試程序,我發現有的時候運行不報錯,有的時候運行報錯,這就很糾結了,但是后來我發現我把ASP.NET Development Server - 端口 xxx退出,然后再運行程序就不報錯了...我以為是好了,可以后來我有發現一個問題,只要端口沒關或者程序運行時候把頁面不停的刷新,就會報錯“已有打開的與此命令相關聯的DataReader,必須首先將它關閉?!?
  我火了,我開始把程序下N個斷點,一步調試,我也沒發現我是用了DataReader對象啊,這就奇怪了,為什么我沒用DataReader對象,它卻包這樣的錯誤?我很是無語也。經過我反復的推敲,終于找到了解決的辦法,原來這個異常不一定跟DataReader有關哦,也有可能跟Connection對象有關哦!
  看下面代碼:  

復制代碼 代碼如下:


private static SqlConnection Sqlconnection;
public static SqlConnection SqlConnection
{
get
{
string SqlconnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["TandyTang"].ToString();
if (Sqlconnection == null)
{
Sqlconnection = new SqlConnection(SqlconnectionString);
Sqlconnection.Open();
}
else if (Sqlconnection.State == System.Data.ConnectionState.Closed)
{
Sqlconnection.Open();
}
else if (Sqlconnection.State == System.Data.ConnectionState.Broken)
{
Sqlconnection.Close();
Sqlconnection.Open();
}
return Sqlconnection;
}
}
///<summary>
/// SqlGetDataTable
///<param></param>
///<param></param>
///<param></param>
///<param></param>
///<returns>DataTable</returns>
public static DataTable SqlGetDataTable(string proc, CommandType type, string[] param, out int count)
{
DataSet ds = new DataSet();
using (SqlCommand cmd = new SqlCommand(proc, SqlConnection))
{
SqlParameter[] myParms = new SqlParameter[2];
myParms[0] = new SqlParameter("@Id", SqlDbType.Int, 4);
myParms[0].Value = paramValue[0];
myParms[1] = new SqlParameter("@Name", SqlDbType.VarChar, 50);
myParms[1].Value = paramValue[1];
foreach (SqlParameter parameter in myParms)
{
cmd.Parameters.Add(parameter);
}
cmd.CommandType = type;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
return ds.Tables[0];
}


以上代碼,我相信在一般人看來,應該都沒問題,我也認為沒什么問題。第一段代碼是創建數據連接,并打開數據庫連接,第二段代碼是創建一個SqlCommand,其中要用到SqlConnection作為第一個參數,這就是問題的關鍵。
  如果在頁面上值運行一遍SqlGetDataTable()方法就不會出任何問題,如果不停的頁面的刷新頁面就“已有打開的與此命令相關聯的DataReader,必須首先將它關閉?!边@樣的異常(也許不會出現哦,你試試就知道了。代碼紅色字體部分就是出現錯誤提示的地方)
  經過我的思考,終于找到了解決的辦法,解決辦法如下,看下面代碼:  

復制代碼 代碼如下:


private static string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["TandyTang"].ConnectionString;
    ///<summary>
/// SqlGetDataTable
///<param></param>
///<param></param>
///<param></param>
///<param></param>
///<returns>DataTable</returns>
public static DataTable SqlGetDataTable(string proc, CommandType type, string[] param, out int count)
{
DataSet ds = new DataSet();
using (SqlConnection con = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(proc, con))
{
SqlParameter[] myParms = new SqlParameter[11];
myParms[0] = new SqlParameter("@Id", SqlDbType.Int, 4);
myParms[0].Value = paramValue[0];
myParms[1] = new SqlParameter("@Name", SqlDbType.VarChar, 50);
myParms[1].Value = paramValue[1];
foreach (SqlParameter parameter in myParms)
{
cmd.Parameters.Add(parameter);
}
cmd.CommandType = type;
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(ds);
}
}
return ds.Tables[0];
}
}


應該發現有什么不同的地方了吧,上面的方法,沒用用到SqlConnection方法,而是把SqlConnection對象寫到using(){}里面的。
  PS:個人建議大家不要用第一種方法,也許會遇到很的麻煩的哦,個人建議多用using(){}語句把ADO.NET的沒對象都放到using(){}里面最好了,using(){}的好處我想大家也都知道,所以我也不做過多的解釋了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
777午夜精品福利在线观看| 日韩av手机在线观看| 久久精品久久久久久| 成人精品久久av网站| 57pao成人国产永久免费| 日韩电影免费观看中文字幕| 91欧美精品午夜性色福利在线| 亚洲人成电影网站色…| 亚洲人成电影网站色xx| 日韩精品视频免费| 黑丝美女久久久| 国产一区二区三区欧美| 国产不卡一区二区在线播放| 国产成人精品综合久久久| 国外成人在线直播| 国内精品一区二区三区| 欧美超级乱淫片喷水| 成人免费大片黄在线播放| 欧美激情视频播放| 久久偷看各类女兵18女厕嘘嘘| 日韩在线观看网址| www.久久撸.com| 成人亚洲欧美一区二区三区| www国产亚洲精品久久网站| 成人精品视频久久久久| 日韩中文字幕国产| 亚洲国产中文字幕久久网| 亚洲欧美中文另类| 亚洲午夜久久久影院| 欧美成人高清视频| 欧美日韩国产页| 国产精品综合不卡av| 中文字幕在线日韩| 欧美色图在线视频| 亚洲精品视频在线观看视频| 日韩在线免费高清视频| 亚洲专区在线视频| 日韩电影第一页| 日韩欧美aⅴ综合网站发布| 亚洲黄在线观看| 亚洲视频在线免费看| 亚洲精品美女在线| 国产日韩欧美黄色| 亚洲美女av在线播放| 亚洲欧美另类国产| 成人激情视频网| 2019日本中文字幕| 第一福利永久视频精品| 欧美日韩国产精品一区| 亚洲天天在线日亚洲洲精| 91亚洲精品一区| 日韩国产高清视频在线| 精品国产一区久久久| 欧美午夜精品久久久久久人妖| 国产精国产精品| 色久欧美在线视频观看| 国产免费亚洲高清| 97视频在线观看网址| 国产亚洲欧洲黄色| 亚洲欧美三级在线| 亚洲缚视频在线观看| 91中文字幕在线观看| 久久久久久久999| 爽爽爽爽爽爽爽成人免费观看| 亚洲精品久久久久久久久久久| 日韩av片免费在线观看| 热99精品只有里视频精品| 91成品人片a无限观看| 免费av在线一区| 日本19禁啪啪免费观看www| 日韩在线免费视频| 久久亚洲影音av资源网| 国产网站欧美日韩免费精品在线观看| 国产亚洲综合久久| 丁香五六月婷婷久久激情| 国产裸体写真av一区二区| 亚洲欧美日韩视频一区| 在线精品国产欧美| 日韩大陆欧美高清视频区| 国产一区二区三区视频| 久久精品视频在线观看| 国产一区二区动漫| 欧美成人免费va影院高清| 好吊成人免视频| 色噜噜亚洲精品中文字幕| 国产免费一区二区三区在线观看| 最近2019中文字幕在线高清| 久久久久久久97| 久久久久久久国产精品视频| 日韩一区av在线| 免费91在线视频| 亚洲精品videossex少妇| 亚洲在线视频观看| 欧美黄网免费在线观看| 97福利一区二区| 国产成人精品在线视频| 欧美在线视频a| 国产精品久久久久久久app| 韩剧1988在线观看免费完整版| 国产精品7m视频| 91精品免费视频| 国产在线a不卡| 欧美激情一区二区三区成人| www.欧美三级电影.com| 中文字幕精品www乱入免费视频| 中文字幕欧美视频在线| 亚洲最大激情中文字幕| 欧美剧在线观看| 精品久久国产精品| 91精品国产综合久久香蕉922| 日韩美女视频在线观看| 亚洲午夜精品久久久久久性色| 亚洲欧美激情四射在线日| 97人洗澡人人免费公开视频碰碰碰| 久久91超碰青草是什么| 久久精品视频中文字幕| 亚洲色图欧美制服丝袜另类第一页| 日韩av免费网站| 国产精品第3页| 国产69久久精品成人看| 亚洲精品美女网站| 亚洲无线码在线一区观看| 久久中国妇女中文字幕| 欧美激情中文字幕乱码免费| 国产一区欧美二区三区| 国内精品中文字幕| 亚洲天堂免费视频| 黄色91在线观看| 国产日韩欧美夫妻视频在线观看| 日本精品久久久| 国产丝袜精品视频| 国产精品第3页| 国产精品电影网| 91免费国产视频| 日本高清视频精品| 日韩欧美国产中文字幕| 91久久久久久久| 日本一区二区在线免费播放| 久久国产天堂福利天堂| 国产精品美女www爽爽爽视频| 久久久欧美精品| 久久成人人人人精品欧| 2019亚洲日韩新视频| 国产精品高潮呻吟久久av黑人| 欧美在线性视频| 高清日韩电视剧大全免费播放在线观看| 国产成人精品在线| 日韩在线欧美在线| 日韩精品免费在线视频| 国产一区二中文字幕在线看| 国产精品高潮呻吟视频| 亚洲欧洲国产伦综合| 日韩经典中文字幕在线观看| 成人性教育视频在线观看| 亚洲成色www8888| 欧美精品一本久久男人的天堂| 成人伊人精品色xxxx视频| 日韩精品视频中文在线观看| 亚洲精品综合精品自拍| 国产成人综合精品在线| 91av在线国产| 国产精品嫩草影院久久久| 中文字幕精品影院| 91色视频在线观看|