2013-05-03 57 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