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

我不知道到底哪错了,高手进来看看
错误信息:将数据类型   varchar   转换为   bigint   时出错。
代码:                
                string   aaa   =   Request.Params[ "id "];
                SqlCommand   SqlCommand11   =   new   SqlCommand( "sp_list_domain_info ",   myConnection);
                SqlCommand11.CommandType   =   CommandType.StoredProcedure;

                SqlCommand11.Parameters.Add( "@id ",   System.Data.SqlDbType.VarChar);
                SqlCommand11.Parameters[ "@id "].Value   =   aaa;

                IDataReader   r1   =   SqlCommand11.ExecuteReader();
                r1.Read();
                site_name.Text   =   r1[ "id "].ToString();
                r1.Close();


存储过程:
ALTER   PROCEDURE   [dbo].[sp_list_domain_info]  
        @id             varchar(7000)                 --序号
AS
BEGIN
        select   *   from   View_domain   where   id=@id
END

就是读不到数据。现在越看眼越花。

------解决方案--------------------
看程序应该没什么错误
通过报错,猜测是 数据库字段类型的问题,是那句代码报的错?
------解决方案--------------------
@id varchar(500)
------解决方案--------------------
select * from View_domain where id=@id

id列是varchar类型的吗?
------解决方案--------------------
SqlCommand11.Parameters.Add( "@id ", System.Data.SqlDbType.Bigint);
SqlCommand11.Parameters[ "@id "].Value = aaa;

检查aaa是否为数值类型
------解决方案--------------------
SqlCommand11.Parameters[ "@id "].Value = aaa;有问题,试试这样:
SqlCommand11.Parameters[ "@id "].Value = “aaa”;

建议在为存储过程添加参数时有这种方法:
SqlParameter[] para = new SqlParameter[]{
new SqlParameter( "@id ", "aaa ")
};

本人觉得这样比较方便,如果存储过程有多个参数就直接加上去就可以了,形如:
SqlParameter[] para = new SqlParameter[]{
new SqlParameter( "@id ", "aaa "),
new SqlParameter( "@name ", "aaa "),
.
.
.
};