2013-05-03 29 views
0

我试图创建一个web服务来帮助执行存储过程。和我在我的代码中调用的web方法来执行存储过程。这是我的Web方法 -在webmethod中传递SqlParameter asp.net

[WebMethod(Description = des_ExecuteParamerizedSelectCommand)] 
public DataTable ExecuteParamerizedSelectCommand(string CommandName, CommandType cmdType, SqlParameter[] param) 
{ 
    DataTable table = new DataTable(); 

    using (SqlConnection con = new SqlConnection(ConnectionString())) 
    { 
     using (SqlCommand cmd = con.CreateCommand()) 
     { 
      cmd.CommandType = cmdType; 
      cmd.CommandText = CommandName; 
      cmd.Parameters.AddRange(param); 

      try 
      { 
       if (con.State != ConnectionState.Open) 
       { 
        con.Open(); 
       } 

       using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
       { 
        da.Fill(table); 
       } 
      } 
      catch 
      { 
       throw; 
      } 
     } 
    } 

    return table; 
} 

现在,这是我在我的数据访问层的代码 - 当我试图调用这个Web方法,它的投掷编译时错误。

Error 2 Argument 2: cannot convert from 'System.Data.CommandType' to 'DAL.sqlDBHelper.CommandType' 

Error 3 Argument 3: cannot convert from 'System.Data.SqlClient.SqlParameter[]' to 'DAL.sqlDBHelper.SqlParameter[]' 

我的代码来调用的WebMethod -

sqlDBHelper.ODCdbHelper mysqlDBHelper = new sqlDBHelper.ODCdbHelper(); 

public Login GetUserRoles(string _Idsid) 
{ 
    Login login = null; 

    SqlParameter[] parameters = new SqlParameter[] 
    { 
     new SqlParameter("@UserName", _Idsid) 
    }; 
    //Lets get the list of all employees in a datataable 

    using (DataTable table = mysqlDBHelper.ExecuteParamerizedSelectCommand("GetUserRole", CommandType.StoredProcedure, parameters)) 

能否请你告诉我这样的人,我在哪里错了?

在此先感谢 Gulrej

回答

0

我相信DAL.sqlDBHelper.CommandType会在你的数据访问层的枚举。 和预期的参数是DAL.sqlDBHelper.SqlParameter[]而不是System.Data.SqlClient.SqlParameter[]

所以,你可以称之为选择功能

DAL.sqlDBHelper.SqlParameter[] parameters = new DAL.sqlDBHelper.SqlParameter[] 
{ 
    new SqlParameter("@UserName", _Idsid) 
}; 

using (DataTable table = mysqlDBHelper.ExecuteParamerizedSelectCommand("GetUserRole", DAL.sqlDBHelper.CommandType.StoredProcedure, parameters)) 

请检查什么是你的DAL的存储过程中定义的命令类型。

1

尝试这样

DAL.sqlDBHelper.SqlParameter[] parameters = new DAL.sqlDBHelper.SqlParameter[]//Change Here  { 
      SqlParameter("@UserName", _Idsid) 
     }; 
     //Lets get the list of all employees in a datataable 

     using (DataTable table = mysqlDBHelper.ExecuteParamerizedSelectCommand("GetUserRole", DAL.sqlDBHelper.CommandType.StoredProcedure, parameters)) 
+0

相同的代码工作,当我没有使用Web服务。 – Gulrej 2013-05-03 04:44:58

+0

现在我有疑问了,我们可以通过一个web方法传递sqlparameter吗? – Gulrej 2013-05-03 04:46:54

+0

sqlDBHelper.ODCdbHelper mysqlDBHelper = new sqlDBHelper.ODCdbHelper(); 它不需要SQL参数... bcz mysqlDBHelper ias类型的ODCdbHelper – 2013-05-03 04:50:36