2016-10-14 322 views
1

我正在使用存儲過程從SQL Server數據庫檢索員工詳細信息。它在分段服務器上工作正常。執行存儲過程時出現「找不到存儲過程」錯誤消息

我剛更改了連接字符串。我已經指出它在我的本地SQL Server。連接字符串是正確的。我收到錯誤附近

cmd.executenonquery() 

這就是我要做的:

public EmployeeDetail GetClientData(int? clientId, string empId, string citizenId, string connectingString) 
{ 
    string constring = connectingString; 

    EmployeeDetail objclValues = new EmployeeDetail(); 

    using (SqlConnection con = new SqlConnection(constring)) 
    { 
     using (SqlCommand cmd = new SqlCommand("usp_Corporate_Employee_Get_Info_for_KYC", con)) 
     { 
      cmd.CommandType = CommandType.Text; 

      if (clientId == null) 
      { 
       cmd.Parameters.AddWithValue("@CorporateID", DBNull.Value); 
      } 
      else 
      { 
       cmd.Parameters.AddWithValue("@CorporateID", clientId); 
      } 

      if (string.IsNullOrEmpty(empId)) 
      { 
       cmd.Parameters.AddWithValue("@EmpId", DBNull.Value); 
      } 
      else 
      { 
       cmd.Parameters.AddWithValue("@EmpId", empId); 
      } 

      if (string.IsNullOrEmpty(citizenId)) 
      { 
       cmd.Parameters.AddWithValue("@CitizenId", DBNull.Value); 
      } 
      else 
      { 
       cmd.Parameters.AddWithValue("@CitizenId", citizenId); 
      } 

      cmd.Parameters.Add("@CorporateName", SqlDbType.VarChar, 40); 
      cmd.Parameters.Add("@EmpFullName", SqlDbType.VarChar, 40); 
      cmd.Parameters.Add("@Nationality", SqlDbType.VarChar, 100); 
      cmd.Parameters.Add("@RetEmpId", SqlDbType.VarChar, 20); 
      cmd.Parameters.Add("@RetCitizenID", SqlDbType.VarChar, 15); 
      cmd.Parameters.Add("@ResponseCode", SqlDbType.VarChar, 2); 
      cmd.Parameters.Add("@ResponseMessage", SqlDbType.VarChar, 70); 

      cmd.Parameters["@CorporateName"].Direction = ParameterDirection.Output; 
      cmd.Parameters["@EmpFullName"].Direction = ParameterDirection.Output; 
      cmd.Parameters["@Nationality"].Direction = ParameterDirection.Output; 
      cmd.Parameters["@RetEmpId"].Direction = ParameterDirection.Output; 
      cmd.Parameters["@RetCitizenID"].Direction = ParameterDirection.Output; 
      cmd.Parameters["@ResponseCode"].Direction = ParameterDirection.Output; 
      cmd.Parameters["@ResponseMessage"].Direction = ParameterDirection.Output; 

      con.Open(); 
      cmd.ExecuteNonQuery(); 
      con.Close(); 

      objclValues.ClientName = Convert.ToString(cmd.Parameters["@CorporateName"].Value.ToString()); 
      objclValues.EmpName = Convert.ToString(cmd.Parameters["@EmpFullName"].Value.ToString()); 
      objclValues.Nationality = Convert.ToString(cmd.Parameters["@Nationality"].Value.ToString()); 
      objclValues.RetEmpId = Convert.ToString(cmd.Parameters["@RetEmpId"].Value.ToString()); 
      objclValues.RetCitizenID = Convert.ToString(cmd.Parameters["@RetCitizenID"].Value.ToString()); 
      objclValues.ResponseCode = Convert.ToString(cmd.Parameters["@ResponseCode"].Value.ToString()); 
      objclValues.ResponseMessage = Convert.ToString(cmd.Parameters["@ResponseMessage"].Value.ToString()); 
      objclValues.clientId = clientId.GetValueOrDefault(0); 
      objclValues.EmpId = Convert.ToString(cmd.Parameters["@RetEmpId"].Value.ToString()); 
      objclValues.EmpCitizenId = Convert.ToString(cmd.Parameters["@RetCitizenID"].Value.ToString()); 
     } 
    } 
    return objclValues; 
} 

連接字符串如下。

<!--<add key="SPConnectionstring" value="Data Source=192.168.0.210;Initial Catalog=Test_C3CKYC;UID=sa;[email protected]" />--> 
<add key="SPConnectionstring" 
    value="Data Source=aufbkmjvl28\sqlexpress;Initial Catalog=C3KYC;persist security info=True;UID=sa;[email protected]" /> 

上面,註釋掉部分將正常工作。

我可以知道爲什麼我得到這個錯誤嗎?謝謝

+0

你有沒有在一開始例如用模式嘗試'dbo'?看起來你犯了別的錯誤,因爲代碼看起來是正確的。 – Fka

+0

我可以訪問其他表格(除SP以外的其他表格) –

+0

嗯 - 考慮到你提到的唯一改變的就是連接字符串 - 你有數據庫上的過程嗎? –

回答

2

您需要更改

cmd.CommandType = CommandType.Text; 

這樣:

cmd.CommandType = CommandType.StoredProcedure; 
如果你想運行一個存儲過程

...

+0

我試過兩個產量相同的結果 –

+0

@marc_s請你認爲你可以看看這個問題:http://stackoverflow.com/questions/40197865/mssql-is-there-any-performance-penalty-for-包裝-A-選擇查詢-IN-A-transa – eddy