con.Open();
string seleid;
SqlCommand xcid=new SqlCommand("pr_sele",con);//存储过程(根据姓名ID查找多表perinfo,check_record1,adressr关联信息)
xcid.CommandType=CommandType.StoredProcedure;
SqlParameter id;//姓名ID
id=xcid.Parameters.Add("@姓名ID",SqlDbType.Char,8);
//id.Value=seleid.ToCharArray(0,8);
id.Value='BH000006';//字符类型。。
xcid.ExecuteNonQuery();存储过程:ALTER PROCEDURE dbo.pr_sele (
@id CHAR(8)

)AS
SET NOCOUNT ON 
SELECT 姓名ID ,姓名 FROM perinfo WHERE (a.姓名ID =@id)
RETURN 
错误信息:
对象必须实现 IConvertible。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 对象必须实现 IConvertible。源错误: 
行 1052: id=xcid.Parameters.Add("@姓名ID",SqlDbType.Char,8);
行 1053: id.Value=seleid.ToCharArray(0,8);
行 1054: xcid.ExecuteNonQuery();
行 1055: DataSet dsid=new DataSet();
行 1056: SqlDataAdapter daid=new SqlDataAdapter(xcid);
 

解决方案 »

  1.   

    姓名ID为字符char型,,长度8位...
      

  2.   

    id.Value=seleid
    就可以了char,varchar,nchar,nvarchar你都传string就可以
      

  3.   

    id.Value = seleid;就可以的。
    实在不行,你可以:id.Value = Convert.GetBytes(seleid,System.Text.Encoding.default);
      

  4.   

    id.Value = seleid;就可以的。
    实在不行,你可以:id.Value = Convert.GetBytes(seleid,System.Text.Encoding.default);
    调试还是有错误
    好像Convert.GetBytes(seleid,System.Text.Encoding.default);不对吧
      

  5.   

    你把存储过程和传递的参数改成String不就什么都解决了,我就是这样解决的,