1.存储过程如下:
  ********************************************************
  set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

/*获取指定用户记录*/
ALTER PROCEDURE [dbo].[zlab_User_GetUserByUserName]
(
  @Username varchar(256)
)
AS
SET NOCOUNT ON
    SELECT Top 1 *
     FROM Zlab_RBAC_Users 
     WHERE Username = @Username
  ********************************************************2.C#执行存储过程代码如下:
  ********************************************************
      if (!string.IsNullOrEmpty(user.Username))
      {
          SqlParameter parm = new SqlParameter("@Username", SqlDbType.VarChar, 256);
          parm.Value = user.Username;
          dr = SqlHelper.ExecuteReader(SqlHelper.UserConnectionString, "zlab_User_GetUserByUserName", parm);
          
          //dr = SqlHelper.ExecuteReader(SqlHelper.UserConnectionString, "zlab_User_GetUserByUserName", new SqlParameter("@Username", user.Username));
      }        
   
   我用的是微软的SqlHelper,没有做任何修改。但是执行的时候总是报"将参数值从 SqlParameter 转换到 String 失败"错误!有人遇到过这样的问题吗?
  ********************************************************            
  

解决方案 »

  1.   


     dr = SqlHelper.ExecuteReader(SqlHelper.UserConnectionString, "zlab_User_GetUserByUserName", parm);红色部分的参数。..sqlhelper中应该是个string类型的吧。。你现在传进去的是个SqlParameter
      

  2.   

    你所调用的方法类型是String你传SqlParameter 这个不一致
      

  3.   

    我调用这个有问题吗?
    public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
    按照你所说 
      dr = SqlHelper.ExecuteReader(SqlHelper.UserConnectionString, "zlab_User_GetUserByUserName",user.UserName);确实没问题
      

  4.   

    贴出你SqlHelper类中ExecuteReader方法看看,就是最后一个参数是string型的,但是你传入的是一个SqlParameter对象,所以肯定报错了,你再看看有没有其他执行存储过程的方法可以使用。
      

  5.   


    public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)红色部是个数组。。你添加参数这么添加            SqlParameter[] sp = new SqlParameter[]
                {
                    new SqlParameter("@Username", SqlDbType.VarChar, 256);               
                };
                sp[0].Value = user.Username;
               
               //再把这个sp传进去
                
      

  6.   

    dr = SqlHelper.ExecuteReader(SqlHelper.UserConnectionString, "zlab_User_GetUserByUserName", parm);
    其中的parm所在处的参数为string类型的.