关于asp.net datasett一个很奇怪的问题,希望哪个大神帮忙看下 , 谢谢!!!!!

【原】关于使用DataReader的一个很奇怪的问题,不应该用DataReader? | 查问题
汇聚最新编程技术,编程问题一网打尽
& 【原】关于使用DataReader的一个很奇怪的问题,不应该用DataReader?
【原】关于使用DataReader的一个很奇怪的问题,不应该用DataReader?
[作者: 分类: ]
.net读取数据集有两种方式:DataSet 和 DataReader
孰优孰劣我们暂且不论,我在做项目纯读取数据的时候选用了DataReader。首先我确认用完之后关闭了,百分百确认。 reader,connection都close了,甚至都dispose了。
但是出现一个很奇怪的问题:
在sqlserver(2000)中查看进程,有非常多的sleeping进程,直到最后打开页面,提示超时,说连接池满。
错误提示:”超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小 “
1.我在连接字符串里加上了Pooling=false禁用了连接池,仍会出现上述问题,说明这些sleeping是sqlserver内部机制管理的。2.当提示 “超时,说连接池满” 的时候,任然有很多sleeping的连接。
解决:将项目中所有使用DataReader的地方改用DataSet ,则不会再出现这个问题。
疑问:1.为什么会出现这种情况,是否是因为DataReader本身的问题?如果是,那稍大并发的项目就不能用DataReader了。2.有没有可能是sqlserver2000 本身的问题?3.提示 超时,说连接池满 的时候,任然有很多sleeping的连接。 既然有空闲连接,为什么不用?
占用一下首页,求各位大牛不吝指教!
—————————————————————
有博友说让贴代码,没有代码的确不好分析,但是项目中的代码是分层分散不太好贴。
我自己写了简单的测试,使用多线程模拟并发测试,也会出现上述问题。
代码如下:
string conString = “Server=.;database=user id=password=123456;“;
SqlConnection con = new SqlConnection(conString);
SqlCommand cmd = new SqlCommand();
con.Open();
cmd.Connection =
mandText = “select * from Customers“;
mandType = CommandType.T
using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
while (reader.Read())
Thread.Sleep(30);
}reader.Close();reader.Dispose();con.Close();con.Dispose();}奇怪问题求指导!DataSet里用SQL语句加行可以,但在DataGridView中追加相同新行,更新到数据库提示主键重复!
05:05:54&&&来源:&&&评论: 点击:
数据连接和变量先前定义好的。&&&&&&&&&&&&
SqlCeCommand&scCommand&=&new&SqlCeCommand();
&&&&&&&&&&&&mandText&=&"select&*&from&Pro_Info";
&&&&&&&&&&&&pad&=&new&mandText,&conn);
&&&&&&&&&&&&pad.InsertCommand&=&scC
&&&&&&&&&&&&SqlCeCommandBuilder&pdb&=&new&SqlCeCommandBuilder(pad);
&&&&&&&&&&&&pad.Fill(ds,&"Pro_Info");
Pro_Info是一张表,0号列int型数字,设为了主键。
DataGridView绑定了这张表,允许在末尾添加新行。
运行后,在表中最后添加新行,主键列是完全不同的数字。加完行后DataGridView并没报错。
pad.Update(ds.Tables["Pro_Info"]);
这句时,却提示主键数字有重复,并且是表中第一行那个数。
设断点查看了表Pro_Info中的内容,有新加的行,并且各行的0列数字并不相同。
请教大牛。。。这奇怪的现象是从何而来。。。。。感激不尽。。。
相关热词搜索:
频道总排行
频道本月排行超奇怪问题:数据集append后提示Dataset not in edit or insert mode
[问题点数:40分,结帖人]
超奇怪问题:数据集append后提示Dataset not in edit or insert mode
[问题点数:40分,结帖人]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2012年4月 Delphi大版内专家分月排行榜第二2012年3月 Delphi大版内专家分月排行榜第二2012年1月 Delphi大版内专家分月排行榜第二2011年11月 Delphi大版内专家分月排行榜第二
2012年2月 Delphi大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。有关上海交大医学系招生问题谢谢了,大神帮忙啊_百度知道
有关上海交大医学系招生问题谢谢了,大神帮忙啊
我发现一个很奇怪的现象! 越详细越易懂越好,本人有意读医,明明上海交大的录取线在湖北很高,就是,上海交大医学系在湖北的录取线却只有580左右的样子,好象有640左右的样子.,上海交大的医学系好像在国内排名很靠前! 大家能告诉我为什么吗,可是,连600分都没有超过?最好能说详细一点,去年也是如此! 可是,想了解一下这方面的情况,甚至超过华中科技大的同济附属医学院. 这.,看起来觉得好纠结啊! 谢谢各位了本人是武汉的学生
提问者采纳
就是原来的上海第二医科大学,不能帮人家开刀之类。,所以有些资源就要共享,一是看不上交大(苍天啊……),变成所谓的交大医学院了。看看交大医学院附属医院有多少啊……
医学院里有分高护,中国的医疗制度交大分数线高是交大别的学院的分数。因为二医现在和交大和并了嘛,享受得不得了,但是基本不做正经事。
医学院如楼上所说。上海的高考志愿中,这三年你根本不是人家医院的正式职工……谁来培养你啊= =医学生读完书已经很辛苦啦,复旦来找二医大合并。我是劝你回头是岸,二医大陷入两难抉择、检验:“进了大学就轻松了。。我在那里待了一个学期。
分数低我觉得可能是吸引生源吧,就是说你以后要当医生的话。,回到医学院本部上课了。不多说了。当然了我是一次都没去过……怎么能做熬夜这种事呢。每次期末考试前、还有什么本硕连读的,所以二医大就去找第一医科大学合并了,因为上海后来说什么医科的大学要跟综合大学合并!比如你后面说的同济……所以就合并了,就先进医学院。,医学院本部很小的。这个可是不归路啊- -。。,所以地方小啊啊啊……
分数低!真的。而且最要命的是。再说了,法语班什么……我也搞不清楚。
据我们老师所说、7年和8年的,就算不转专业读完了,第一个学期在闵行最轻松。等到大一下学期有转专业的时候,可是不跟交大合并的话。如果能在闵行校区上学。书是一本比一本厚啊,以后也有相当一部分人是不选择做医生护士之类的。,医学院招生是独立的,必须在实习基地(就是医院吧)每个科室都做。很多人想进交大又怕成绩不稳,但是之后就……靠,只有医学院的可以转到别的系去,所以才变成交大医学院的,其他基本都是5年,还要去搞个3年……我了个去的。,刚开始合并的时候。。,很多人就把这个当做跳板,本硕连读应该。要看你自己选择的,那个书厚是厚得来我都想去死了!”之类的话。落差太大了,学医真的很苦的= =如果高中听惯了老师说,医学院的护理系是分在提前录取的志愿里的。你懂的。
反正不管是什么名称,那千万别来医学院,那这辈子真是上了天堂了,努力学习争点分数上交大别的系。我同学有个读八年制法语班的那个。总之临床的人很多的。
同学我劝你好好想想啊。。当然了。),要执照的事情不能做的。
所谓的住院医师三年轮转。因为每年医学生转专业的就不少,要8年……
学医可不能靠一时冲动啊,晕乎,但是二医大看不上(= =,再努力转到别的专业去。。,就是因为在市中心。
不要以为分数低就简单了,通宵教室都是人!现在回来啦= =。。,这个水平不是盖的,剩下来就更加没好的大学了,别的系不能转到医学院里来、临床。
除了高护是本科读四年。。再后来交大来找二医大合并
其他类似问题
上海交大的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁关于dataset一个很奇怪的问题,希望哪个大神帮忙看下 , 谢谢!!!!!_百度知道
关于dataset一个很奇怪的问题,希望哪个大神帮忙看下 , 谢谢!!!!!
从数据库读取一个表到dataset,然后绑定到一个datagridview,通过datargridview显示出来,然后用户可以修改其中一条记录,相应的dataset也自动修改,但dataset.getchang()却为NULL,更新不了数据库,但是如果删除记录和增加记录时,dataset.getchang()不为空,能更新数据库,太奇怪了?
SqlConnection con= new SqlConnection();
con.ConnectionString = Properties.Settings.Default.connectionS
SqlCommand comm = new SqlCommand(&select * from dbo.书&, con);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand =
SqlCommandBuilder buil = new SqlCommandBuilder(adapter);
if(dataset .GetChanges ()!=null )//修改datagridview的一个单元,dataset也能
俯孩碘绞鄢悸碉溪冬娄
看到该单元的改变,但一直为NULL????
adapter .Update (dataset )
dataset .AcceptChanges ();
}下面的删除记录就能更新数据库:SqlConnection sc = new SqlConnection();
sc.ConnectionString = Properties.Settings.Default.connectionS
SqlCommand comm = new SqlCommand(&select * from dbo.书&, sc);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand =
SqlCommandBuilder buil = new SqlCommandBuilder(adapter);
dataset.Tables[0].Rows[e.RowIndex].Delete();
adapter.Update(dataset.GetChanges ());
dataset.AcceptChanges();
getchange()是个事件吧?事件是需要触发的,没有触发直接调用,就会为null
getchanges()是个函数返回的是改变的记录组成的dataset,按道理它不应该为空的
这个函数里面写的是什么呢?
其他类似问题
dataset的相关知识
按默认排序
其他1条回答
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 asp.net dataset 的文章

 

随机推荐