0

我正在尝试创建一个有助于执行存储过程的 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

4

2 回答 2

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))
于 2013-05-03T04:43:04.543 回答
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 中的存储过程定义的命令类型是什么。

于 2013-05-03T04:39:38.280 回答