关于ASP.NET连接MY SQL,ExecuteReader不返回数据

Jck 2012-07-19 05:33:07
自己架设的 mySql数据库, 设置都是默认的。 使用 SQLyog 连接 以及查询 数据 都没有问题,之前一直使用的代码也没问题,
今天不知道怎么了。连接上数据库,但是MySQL提供的 MySqlCommand.ExecuteReader() 方法却突然不返回任何数据了。使用Sqlyog 查看 连接字符串没问题,SQL语句也没有问题。
实在找不出问题在哪里,具体大家看一下代码吧。 可能我表述的也不清楚。如果有问题大家请留言问我。


1.首先是我的代码快:


2.然后是 SQL语句。也就是commandString


3.connection open 以后的状态


4.dataReader 的状态


5.SQLyog 查询的 commandString


代码一直都没有改变过。一直使用都没问题。就今天突然不行了。大家看看吧。连接字符串肯定没问题,SQL语句也肯定没问题。
...全文
342 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jck 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

会不会是MySqlDataReader 没有关闭的缘故,导致后面的无法访问了。
using (MySqlDataReader sdr = _cmd.ExecuteReader())
{

}
[/Quote]
嘿嘿。我的try catch 语句里面有 fanily 哦 。所以不会出现 没有关闭的情况。谢谢解答
Jck 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

1,你可以去掉查询语句中的where测试,看看是不是中文编码导致
2,如果去掉Where仍旧不返回,你再细细看连接的库真的是对的吗?尤其是端口和服务所对应的数据库
[/Quote]
谢谢了。还是孟哥学识广。就是中文编码导致的。我在安装mysql的时候有一个什么提示选择的是utf-8. 估计就是编码的问题。去掉where语句以后就可以读出数据。开始我有想可能是编码的问题。但是由于懒得重装数据库。也也不会修改mysql的设置。我刚接触mysql几天而已。所以一直就没在意。从你那里学会一招。可以使用不带中文的sql语句试试。问题解决了。谢谢孟哥
事理 2012-07-19
  • 打赏
  • 举报
回复
会不会是MySqlDataReader 没有关闭的缘故,导致后面的无法访问了。
using (MySqlDataReader sdr = _cmd.ExecuteReader())
{

}

孟子E章 2012-07-19
  • 打赏
  • 举报
回复
1,你可以去掉查询语句中的where测试,看看是不是中文编码导致
2,如果去掉Where仍旧不返回,你再细细看连接的库真的是对的吗?尤其是端口和服务所对应的数据库
Jck 2012-07-19
  • 打赏
  • 举报
回复
打错了。是因为习惯了。不是喜欢了。囧~
Jck 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

其实,你while没有什么用处,返回一个对象,while纯属多余
只要
if(dr.Read())
{}
就可以了,

另外,代码没问题,应该是sql语句问题,如果sql语句没问题。应该是连错库了
[/Quote]
刚才还在想如果你给我解答多好。哈哈。 不过真的不是这些的问题。你也可以看到我专门截图了。我的connection是可以open的而且没有报错。就证明我数据库能连接上,sql语句我也专门在最后一个图给出来了。那个sql语句就是程序复制出来的。在数据库中确实可以查出数据。写while是因为喜欢了。嘻嘻。因为有时候datareader不止读一条数据嘛。谢谢解答了。你可以好好看看我截的图。专门把运行的时候 变量的属性都给截图出来了。纠结我一个下午了。
孟子E章 2012-07-19
  • 打赏
  • 举报
回复
其实,你while没有什么用处,返回一个对象,while纯属多余
只要
if(dr.Read())
{}
就可以了,

另外,代码没问题,应该是sql语句问题,如果sql语句没问题。应该是连错库了
Jck 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

user.BusinessId=dr.GetInt32(0);改成这种试试不要列名
[/Quote]
跟那个没有关系。现在压根是不进入 while(dr.read()) 也就是 datareader没有返回任何的数据。
mysql的dll 是支持 列名的写法的。谢谢解答
  • 打赏
  • 举报
回复
user.BusinessId=dr.GetInt32(0);改成这种试试不要列名
Jck 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

去掉catch,或在catch里重新把该异常抛出,看看什么错。

还有一种可能就是你的SQL语句不对,可能是条件不成立。
[/Quote]
先谢谢,刚才试了一下。把try catch 去掉了。一样没有报错。 sql语句 我最后一张图片有体现出来是可以查出结果的,因为我是从程序里的commandstring 直接复制粘贴到 sqlyog里面执行的。这段代码我写完已经很久了。 一直都在用都没有问题。就今天不知道怎么了。突然就连不上了。我代码没有人动过~ 我自己也没有进行过修改。
Jck 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

去掉catch,或在catch里重新把该异常抛出,看看什么错。

还有一种可能就是你的SQL语句不对,可能是条件不成立。
[/Quote]
去掉了。try catch 没有报任何的错误。直接就是 while(dr.Rader()) 那里不执行,
sql语句的话。我最后一个图片已经体现出来了。没有错误。我是从程序里截取的commandstrign然后粘贴到 sqlyog里面执行的。而且这个sql语句我用了蛮久了。代码也没更改过。就今天不知道怎么了一个下午了。我都没弄明白。
dalmeeme 2012-07-19
  • 打赏
  • 举报
回复
去掉catch,或在catch里重新把该异常抛出,看看什么错。

还有一种可能就是你的SQL语句不对,可能是条件不成立。
Jck 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

不会是你服务器的IP地址变掉了吧,你测试能连接上数据库么?
[/Quote]
可以连接上的。你看connection open 以后的 state 是open 。

服务器地址没有变。呵呵。
StarlightHan 2012-07-19
  • 打赏
  • 举报
回复
不会是你服务器的IP地址变掉了吧,你测试能连接上数据库么?

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧