我不知道到底哪错了,高手进来看看
错误信息:将数据类型 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 "),
.
.
.
};