读书人

小弟我不知道到底哪错了来看看

发布时间: 2012-02-09 18:22:27 作者: rapoo

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

读书人网 >asp.net

热点推荐