报的错是“过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'”存储过程是这样写的:
create proc proc_getdata
(
@need varchar(500)
)
as
begin
declare @strsql nvarchar(500)
set @strsql='select * from config where '+ @need
exec sp_executesql @strsql  
end
go
然后我在sql里边执行都可以
exec proc_getdata '1=1'
可是我到程序里边去执行就报错了
程序里边是这样写的:
 SqlDataAdapter da = new SqlDataAdapter("proc_getdata", Conn);
            SqlParameter para0 = new SqlParameter("@need", need);//need这个参数是前台传过来的string参数“1=1”
            //SqlParameter para1 = new SqlParameter("@cont", content);
            da.SelectCommand.Parameters.Add(para0);
            //da.SelectCommand.Parameters.Add(para1);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.Fill(ds);
            return ds;
        }
        catch {
            return ds;
        }
运行到 da.Fill(ds)
就catch到错误过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'

解决方案 »

  1.   

    这个参数 我没定义啊 只定义了一个@need参数
      

  2.   

    数据访问的parameter里的@参数要和@need保持一致吧
      

  3.   

    我把 定义 @need varchar(500)这里改成了 @need nvarchar(500)后,不报错了,但是没数据。郁闷了!
      

  4.   

    需要用到中文的话 建议使用nvarchar  解决了就给他们结贴吧。
      

  5.   


    论坛签名======================================================================

    当您的问题得到解答后请及时结贴.

    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
    http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html如何给分和结贴?
    http://community.csdn.net/Help/HelpCenter.htm#结帖如何给自己的回帖中也加上签名?
    http://blog.csdn.net/q107770540/archive/2011/03/15/6250007.aspx
      

  6.   

    @statement   关键是没有看到这个参数啊!
    嗯,中文用 nvarchar,赞同!