当前位置:编程学习 > C#/ASP.NET >>

数据更新之后的奇怪现象,求教[asp.net/c#+mysql]

环境是asp.net/c#+mysql。开发web页面程序。
做了2个页面,一个是一览检索页面(一览用gridview表示),一个是详细页面。详细页面可以追加更新数据。
现在的现象是,从在检索页面做检索,正常出结果。选择其中一条跳转到详细页面,修改内容,然后提交更新。再返回检索页面之后,无论检索页面怎么检索,都无法检索出结果了,不输入条件直接全件检索也一样没结果。
此时观察数据库,之前更新的数据已经正常反映到数据库中,单独把检索页面的sql拿来执行也能有结果。
关闭vs调试,重新启动web调试,没有效果。
关闭vs,重新启动vs,启动web调试,检索页面可以正常出现结果了。

另外,没有配置连接池。

详细页面的更新处理,用的是adpater.update(dataset)来实现的,启用了事务处理。

有谁知道是怎么回事,或者有什么思路或者方向啥的?不胜感激! --------------------编程问答-------------------- 你详细页的返回按钮是不是传了值到检索页?如果有,看你检索页的处理代码 --------------------编程问答-------------------- 回楼上,没有传值。我debug察看时,拿着生成好的sql出来看过,用别的连接工具可以查到数据。 --------------------编程问答-------------------- 检索页也没有信息出来吗,两个页面之间数据的传递啊,应该关注这个方面 --------------------编程问答-------------------- 之前没说清楚。
再说一下。详细页面更新之后,返回检索页面。这个时候进行检索没有数据了。
然后,重起web调试,一上来就进入检索页面,这个时候就已经检索不出数据了。

按理说重起web调试,session信息应该清空。就算没清空,重起web调试之后窗口已经不是以前的窗口,cookie key值肯定变化了的,不可能取到之前的session信息。 --------------------编程问答-------------------- 回3楼,检索页面不从任何页面取值,只从页面上拿输入的值作为检索条件。而且,我debug看过实际用来检索的sql,没有任何条件,单纯selet from. 没有where.

--------------------编程问答-------------------- --------------------编程问答--------------------  断点跟踪不到东西么? --------------------编程问答-------------------- “关闭vs,重新启动vs,启动web调试,检索页面可以正常出现结果了。”
Lz應該檢查一下檢索頁面的詳細代碼呀。 --------------------编程问答--------------------
引用 7 楼 airch 的回复:
 断点跟踪不到东西么?

恩,断点跟踪过了,没有任何传值。跟踪到的sql,拿出去执行是能有结果的,关键在于这点。
--------------------编程问答--------------------
引用 8 楼 sfxdawn 的回复:
“关闭vs,重新启动vs,启动web调试,检索页面可以正常出现结果了。”
Lz應該檢查一下檢索頁面的詳細代碼呀。


我已经debug拿到sql文了,外面重新连接数据库执行是没有问题的,程序里面就得不到值。 --------------------编程问答--------------------
引用 10 楼 godenvy 的回复:
引用 8 楼 sfxdawn 的回复:

“关闭vs,重新启动vs,启动web调试,检索页面可以正常出现结果了。”
Lz應該檢查一下檢索頁面的詳細代碼呀。


我已经debug拿到sql文了,外面重新连接数据库执行是没有问题的,程序里面就得不到值。

那应该是你代码的问题 --------------------编程问答--------------------
引用 11 楼 airch 的回复:
引用 10 楼 godenvy 的回复:

引用 8 楼 sfxdawn 的回复:

“关闭vs,重新启动vs,启动web调试,检索页面可以正常出现结果了。”
Lz應該檢查一下檢索頁面的詳細代碼呀。


我已经debug拿到sql文了,外面重新连接数据库执行是没有问题的,程序里面就得不到值。

那应该是你代码的问题


你觉得会是什么方面?我debug看执行完sql之后的dataset里面就没有数据。(adapter.fill实现)
关键是,如果没有经过详细頁面的更新操作,就没有问题。比如跳转到详细頁面,不更新数据,又跳转回来,一切正常。所谓頁面传值,仅仅是检索頁面单向传到详细页面。

思路,我要思路啊 --------------------编程问答-------------------- 那看你更新的代码做了啥咯 --------------------编程问答--------------------
引用 13 楼 airch 的回复:
那看你更新的代码做了啥咯

哎,我觉得还是不在点子上。

首先很重要一点,在执行query时的sql我已经拿到了,拿出来在别的工具比如mysql workbanch里面执行是有结果的。但是debug的时候,就发现执行完的dataset里面的datatable唯空。

其次,无论是否经过更新操作,执行query时的sql都一样,没有变化。

--------------------编程问答-------------------- sql肯定不会发生变化,但是环境会变啊,你跟踪了sql执行的结果是什么数据都没
而且sql在工具里可以查询出数据,那就不是sql的问题啊 --------------------编程问答-------------------- --------------------编程问答-------------------- 自己顶一下 --------------------编程问答-------------------- 再返回检索页面之后,无论检索页面怎么检索,都无法检索出结果了

来点检索数据的代码和绑定的代码来看看?

去数据库里利用SqlProfile监视接到的SQL命令 --------------------编程问答-------------------- 8好意思,MySql里应该也有类似的机制吧 --------------------编程问答-------------------- 自己又研究了一下,出现一个有意思的情况:
如果建立数据库连接的字符串里,开启了连接池,则出现我最初描述的情况.
如果关闭连接池,则一切正常.详细页面更新完成之后,回到检索页面也能正常检索数据了.

另外,我最初描述的时候有误,我的连接池是开启了的.之前以为没有明写Pooling=true就没开启,才知道原来是默认开启的.

这也间接证明了我之前的看法:跟页面间传递参数什么的完全没关系.

现在的思路是,如果开启连接池就出现问题,那么说明做完更新操作之后,这个连接应该已经无效了.但是并没有释放干净,而是返回了连接池.于是下次再连接数据库时,从连接池里面取到的连接依旧是之前已经无效了的,所以没法检索到数据了.
这个能比较好的解释为啥关闭连接池之后,能正常检索了. --------------------编程问答-------------------- 但是为何会更新之后就无效了呢,再说,如何让一个连接无效了,确不释放呢? --------------------编程问答-------------------- --------------------编程问答-------------------- 为什么不加断点调试一下?
--------------------编程问答-------------------- 自己顶一下,有谁有点思路的? --------------------编程问答-------------------- --------------------编程问答-------------------- 自己顶顶。最新的情况都写在20楼了。 --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,