自己架设的 mySql数据库, 设置都是默认的。 使用 SQLyog 连接 以及查询 数据 都没有问题,之前一直使用的代码也没问题,
今天不知道怎么了。连接上数据库,但是MySQL提供的 MySqlCommand.ExecuteReader() 方法却突然不返回任何数据了。使用Sqlyog 查看 连接字符串没问题,SQL语句也没有问题。
实在找不出问题在哪里,具体大家看一下代码吧。 可能我表述的也不清楚。如果有问题大家请留言问我。
1.首先是我的代码快:
2.然后是 SQL语句。也就是commandString
3.connection open 以后的状态
4.dataReader 的状态
5.SQLyog 查询的 commandString
代码一直都没有改变过。一直使用都没问题。就今天突然不行了。大家看看吧。连接字符串肯定没问题,SQL语句也肯定没问题。

解决方案 »

  1.   

     可以连接上的。你看connection  open 以后的 state 是open 。服务器地址没有变。呵呵。
      

  2.   

    去掉catch,或在catch里重新把该异常抛出,看看什么错。还有一种可能就是你的SQL语句不对,可能是条件不成立。
      

  3.   

     去掉了。try catch 没有报任何的错误。直接就是 while(dr.Rader()) 那里不执行,
     sql语句的话。我最后一个图片已经体现出来了。没有错误。我是从程序里截取的commandstrign然后粘贴到 sqlyog里面执行的。而且这个sql语句我用了蛮久了。代码也没更改过。就今天不知道怎么了一个下午了。我都没弄明白。
      

  4.   

    先谢谢,刚才试了一下。把try catch 去掉了。一样没有报错。 sql语句 我最后一张图片有体现出来是可以查出结果的,因为我是从程序里的commandstring 直接复制粘贴到 sqlyog里面执行的。这段代码我写完已经很久了。 一直都在用都没有问题。就今天不知道怎么了。突然就连不上了。我代码没有人动过~ 我自己也没有进行过修改。
      

  5.   

    user.BusinessId=dr.GetInt32(0);改成这种试试不要列名
      

  6.   

     跟那个没有关系。现在压根是不进入 while(dr.read()) 也就是 datareader没有返回任何的数据。
     mysql的dll 是支持 列名的写法的。谢谢解答
      

  7.   

    其实,你while没有什么用处,返回一个对象,while纯属多余
    只要
    if(dr.Read())
    {}
    就可以了,另外,代码没问题,应该是sql语句问题,如果sql语句没问题。应该是连错库了
      

  8.   

    刚才还在想如果你给我解答多好。哈哈。 不过真的不是这些的问题。你也可以看到我专门截图了。我的connection是可以open的而且没有报错。就证明我数据库能连接上,sql语句我也专门在最后一个图给出来了。那个sql语句就是程序复制出来的。在数据库中确实可以查出数据。写while是因为喜欢了。嘻嘻。因为有时候datareader不止读一条数据嘛。谢谢解答了。你可以好好看看我截的图。专门把运行的时候 变量的属性都给截图出来了。纠结我一个下午了。
      

  9.   

    1,你可以去掉查询语句中的where测试,看看是不是中文编码导致
    2,如果去掉Where仍旧不返回,你再细细看连接的库真的是对的吗?尤其是端口和服务所对应的数据库
      

  10.   

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

  11.   

    谢谢了。还是孟哥学识广。就是中文编码导致的。我在安装mysql的时候有一个什么提示选择的是utf-8. 估计就是编码的问题。去掉where语句以后就可以读出数据。开始我有想可能是编码的问题。但是由于懒得重装数据库。也也不会修改mysql的设置。我刚接触mysql几天而已。所以一直就没在意。从你那里学会一招。可以使用不带中文的sql语句试试。问题解决了。谢谢孟哥
      

  12.   

    嘿嘿。我的try catch 语句里面有 fanily 哦 。所以不会出现 没有关闭的情况。谢谢解答