当用户名为汉字登录失败
怎么解决啊?
MySqlConnection conn = new MySqlConnection(str);
string sql = "select * from bg_user where username='" + username + "'and password='" + password + "'";
 try
{
 MySqlCommand cmd = new MySqlCommand(sql, conn);
 conn.Open();
 MySqlDataReader sdr = cmd.ExecuteReader();
 if (sdr.Read())
{
    return true;
}
else
{
 return false;
}
}
catch
{
 return false;
 }

解决方案 »

  1.   

    用的MySql?
    看着不会出错,具体需要调试
      

  2.   

    根本就没报错啊,直接就是
    if (sdr.Read())
    {
     return true;
    }
     else----执行到 if后就到else了
    没报错啊
      

  3.   

    MySqlConnection conn = new MySqlConnection(str);
    string sql = "select * from bg_user where username='" + username.setUn() + "'and password='" + password + "'";
     try
    {
     MySqlCommand cmd = new MySqlCommand(sql, conn);
     conn.Open();
     MySqlDataReader sdr = cmd.ExecuteReader();
     if (sdr.Read())
    {
        return true;
    }
    else
    {
     return false;
    }
    }
    catch
    {
     return false;
     }
      

  4.   

    楼上
    + username.setUn() +加个setUn是什么意思?我 怎么.不出来?没这个属性啊
      

  5.   

    string sql = "select * from bg_user where username='" + username + "'and password='" + password + "'";
    断点打到这条上 输出的是什么??
      

  6.   

    用的mysql 是没出错,用字母都没问题,但是当我注册用汉字的时候 登录就失败了。怎么解决?
      

  7.   

    拿到获取的sql在数据库直接运行
      

  8.   

    select * from bg_user where username='哈哈'and password='861a7ac13a26d0bad761c0c7a08a7929'
    我的汉字用户名是 哈哈 
    为什么就失败了啊?
      

  9.   

    select * from bg_user where username='哈哈'and password='861a7ac13a26d0bad761c0c7a08a7929' 
    在数据库查询可以查到数据
      

  10.   

    select * from bg_user where username=N'哈哈'and password='861a7ac13a26d0bad761c0c7a08a7929'加个N username=N'哈哈' 试试看。
      

  11.   

    汉字的话最好搞成byte数组进行处理比较好。
      

  12.   

    报的是什么错误说清楚,是报错还是取不到值根本就没报错啊,直接就是
    if (sdr.Read())
    {
    return true;
    }
    else----执行到 if后就到else了
    没报错啊
      

  13.   

    没接触过mysql,你搜索下mysql的中文,是否和编码有关系的啊。
      

  14.   

    如果是编码格式不同就该mysql的配置文件改成你用的编码格式
      

  15.   

    我看是你的字段类型的错误.... nvarchar 记得不太清  有些类型会把不足的地方补上空格
    所以你的用户名应该是 哈哈空格空格  你用的什么类型?  换成varchar看看
      

  16.   

    那么就是编码的问题了,证明sql没有错误。
    直接是另一个字符了怎么会查到??
    貌似在选项中。没查到
    楼主查下是不是编码的问题吧
      

  17.   


    转换格式阿
    MYsql是不支持汉字的
      

  18.   

    w还是微软的好。我做过的Access,mssql 的都没有汉字问题。
      

  19.   

    mssql很正常,是否编码问题乱码
    http://topic.csdn.net/u/20090405/12/6702e001-0d2b-4345-9cc6-140664535897.html
      

  20.   

    没用过mysql, 难道mysql只能用字符串拼接啊?
      

  21.   

    这句有问题,string sql = "select * from bg_user where username='" + username + "'and password='" + password + "'";
    就将'and 改为' and 中间有一空格,程序直接就进了catch
      

  22.   


    用汉字时,数据库字段最好用 nvarchar 数据类型,存取数据采用Unicode编码,读写数据时,要给变量或字符串加上N''分隔符
      

  23.   

    MYSQL安装的时候默认使用的字符编码是latin-1,不支持中文的,你要可以重新设置成GB2312或其他支持中文的字符集
      

  24.   

    你检查一下编码吧,以前用过MySQL,也出过类似问题.
    MYSQL安装的时候默认使用的字符编码是latin-1,不支持中文的,
    你要可以重新设置成GB2312或其他支持中文的字符集
      

  25.   

     username=N'" + username.setUn() + "'
      

  26.   

    你这句代码是什么意思?楼上有人这么提出过
    但是 setup没这个方法
      

  27.   

    1. 修改/etc/my.cnf文件.改成如下内容:[mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    default-character-set=utf8[mysql.server]
    user=mysql
    basedir=/var/lib[mysqld_safe]
    err-log=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid注意.就是加入了一句: default-character-set=utf82. 命令 /etc/init.d/mysqld restart 重新启动MySQL.3. 打开PhpMyadmin. 选择Lang为"Chines simplifies(zh-utf-8)". 选择"MySQL连接校对为utf8_general_ci". 点"服务器变量和设置". 可以看到:character set client utf8 utf8
    character set connection utf8 utf8
    character set database utf8 utf8
    character set results utf8 utf8
    character set server utf8 utf8
    character set system utf8 utf8
    collation connection utf8_general_ci utf8_general_ci
    collation database utf8_general_ci utf8_general_ci
    collation server utf8_general_ci utf8_general_ci从这里可以看到character全部变成UTF-8了.为什么都要改成UTF-8呢?改成GB2312不行吗?解释如下:我也不想改成UTF-8. 只是PhpMyadmin 2.6在MySQL 4.1的时候只会用UTF-8. 连其他页面的charset也都是UTF-8. 改成GB23122一定会乱码. 我们只能凑PhpMyadmin了. 只有在MySQL 3.23的时候PhpMyadmin才会多一个GB2312的页面charset.这时候是正常的.3. 将以前的MySQL 3.23的库文件导入MySQL 4.1的库.有两种情况:一是从PhpMyadmin上导入. 这时候你要注意的是在选择库文件的页面左下脚有个"文件的字符集:". 默认是UTF-8. 要改成Gb23122. 否则导进去乱码.
    二是在Linux下导入.这时候你需要先在库文件的头部加一行:SET NAMES 'gb2312'; 注意最后也是;号. 别漏了. 然后执行: MySQ -u 用户名 -p 密码 xxx.sql > 库名
    导入完成以后再用PhpMyadmin打开看. 里面的中文字就是正确的.4.从MySQL 4.1里导出库文件一.用PhpMyadmin导出.导出倒是问题不大.如果PhpMyadmin的浏览页面里显示的中文是正常的.那么导出肯定也是正常的.
    二.在Linux上导出.如果用mysqldump导出出现了乱码也没有关系.可以运行iconv来转换一下:iconv -c -f UTF-8 -t GB2312 库文件名 > 新的Gb2312的库文件名综上所述.需要注意:1. 尽量在需要导入的库文件的开头加入 SET NAMES 'Gb2312'; 告诉MySQLl你要导入的是一个Gb2312的文件.2. 可能你需要这个: SET NAMES 'utf8'; 在登陆到MySQL后用.3. 把character的一些默认参数改到UTF-8上.有时可以减少一些困扰.不过也不是必须的.4. 在MySQL上使用: SHOW VARIABLES LIKE 'character_set_%'; 用来查看当前的状态.5. 如果出现乱码也不要怕.一是你要注意留存原有的备份.二是用iconv来进行转化.
      

  28.   

    在你的连接字符串后面加?useUnicode=true&characterEncoding=gbk
      

  29.   

    先把mysql的数据读出来看一下是什么,再比较。
      

  30.   

     string sql = "select * from bg_user where username='" + username + "' and password='" + password + "'"?useUnicode=true & characterEncoding=gbk;
    怎么写吗?不行啊。语法错误
      

  31.   

    不是在这写,在你的连接字符串(str变量)后加;
    就是拼你服务名,数据库,用户名,密码的那个str字符串后面加!
      

  32.   


    <add key="strconn" value="Server=127.0.0.1;Port=3306;Database=lxblog;Uid=imsasuke;Pwd=sa;"/>
    怎么加啊?
      

  33.   

    add key="strconn" value="Server=127.0.0.1;Port=3306;Database=lxblog;Uid=imsasuke;Pwd=sa;charset=gbk"/