本帖最后由 huzhichenghigh 于 2013-11-04 15:49:10 编辑

解决方案 »

  1.   

    方法一:
    不要使用参数。
    string sql = string.Format("select count(*) from [UserInfo] where [UserName] like N'{0}'",this.txtUserName.Text)
      

  2.   

    方法2:
    在数据库中拼接字符串,然后使用exec(@sql)执行
      

  3.   

    cmd.Parameters.Add("@username", SqlDbType.NVarChar);已经指定参数类型为Unicode了
    问题的重点应该是数据库字段的类型是否以N开头
    如果存储了中文但又不是NVarChar类型,在使用中可能会出问题(当没有中文语言时字符会显示成?)
    改字段类型吧
      

  4.   

    感谢您的回答,我目前用的是第一种方法,但这种情况就抛弃参数了,我觉的您说得这种方法很好,不知道具体实现是怎么样的呢?
    就是在存储过程中拼接字符串,然后使用exec执行这条语句
    declare @sql varchar(100)
    set @sql = 'select count(*) from [UserInfo] where [UserName] like N'''+@username+''''
    exec(@sql)
      

  5.   

    在用模糊查询的时候可以这样。
    cmd.Parameters.Add("@username", "%" + SqlDbType.NVarChar + "%");根据经验的话,Sql语句这么写应该行的吧!
    1、string sql = "select count(*) from [UserInfo] where [UserName] like N@username";