在webmethod asp.net中传递SqlParameter

时间:2013-05-03 04:33:21

标签: asp.net

我正在尝试创建一个有助于执行存储过程的Web服务。我在我的代码中调用的Web方法来执行存储过程。这是我的网络方法 -

[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

2 个答案:

答案 0 :(得分: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))

答案 1 :(得分:0)

我认为DAL.sqlDBHelper.CommandType将是您数据访问层中的枚举器。 预期参数为DAL.sqlDBHelper.SqlParameter[],而不是System.Data.SqlClient.SqlParameter[]

因此你可以将select函数称为

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

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

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