日期:2014-05-17  浏览次数:20454 次

不能对nvarchar 调用方法
代码:
  public void bind()
  {
  string str = @"select blog.ID,blog.UserID, Case blog.Pass When 1 Then '是' else '否' end as Pass ,user.UserName from blog inner join [user] on blog.ID = user.BlogID";

  DataSet ds = new DataSet();

  SqlConnection cone=new SqlConnection (@"Server=.\sqlexpress;uid=zcy;pwd=111111;DataBase=MyBlogDB");
  SqlDataAdapter da = new SqlDataAdapter(str, cone);
  da.Fill(ds);


  GridView1.DataSource = ds;
  GridView1.DataBind();

  }
blog,和 user 是两个数据表
===================================================
错误提示: da.Fill(ds);  不能对nvarchar 调用方法
诚心求教!


------解决方案--------------------
select a.ID,a.UserID, (case a.Pass When 1 Then '是' else '否' end) as Pass,b.UserName from blog a inner join [user] b on a.ID = b.BlogID
------解决方案--------------------
string str = @"select blog.ID,blog.UserID, (Case blog.Pass When 1 Then N'是' else N'否' end) as Pass ,user.UserName from blog inner join [user] on blog.ID = user.BlogID";
------解决方案--------------------
查询分析器执行看看

------解决方案--------------------
user都加上[user] 试试


网上找到的:

不知道大家调用存储过程的时候有没有遇到过这样的情况,"开头的标识符太长,最大长度为128",记得上个星期为了这个问题搞死我了

不过最终还是被聪明的我解决了,下面写一下怎么解决的。

如果你调用的存储过程是用双引号的话就会出现上面的错误,但是用单引号就不会了~~~

双引号的最大限制就是128

那么我们就不要用双引号用单引号,但是用单引号里面如果有用到双引号就比较麻烦了,所以我们用两个单引号代替一个双引号~~~

嘻嘻,问题就解