2015-06-29 97 views
0

現在我有這樣的方法來執行存儲過程:「的SQLException找不到存儲過程」 - C#中的SqlServer執行存儲過程不帶參數

public static DataTable ExecuteProcedureNoParams(string connectionStringName, string procedureName) 
    { 
     using (DbCommand sprocCmd = SqlDB(connectionStringName).GetStoredProcCommand(procedureName)) 
     { 
      DataTable dt = new DataTable(); 
      using (IDataReader sprocReader = SqlDB(connectionStringName).ExecuteReader(sprocCmd)) 
      { 
       dt.Load(sprocReader); 
       // DisplayRowValues(sprocReader); 
      } 

      return dt; 

     } 
    } 

private static SqlDatabase sqlDB; 

    public static SqlDatabase SqlDB(string connectionString) 
    { 
     if (sqlDB == null) 
     { 
      sqlDB = CreateConnection(connectionString); 
     } 
     return sqlDB; 
    } 

    private static SqlDatabase CreateConnection(string connectionString) 
    { 
     DatabaseProviderFactory factory = new DatabaseProviderFactory(); 

     if (string.IsNullOrWhiteSpace(connectionString)) 
     { 
      // Create the default Database object from the factory. 
      // The actual concrete type is determined by the configuration settings. 
      return factory.CreateDefault() as SqlDatabase; 
     } 
     else 
     { 
      // Create a Database object from the factory using the connection string name. 
      return factory.Create(connectionString) as SqlDatabase; 
     } 

    } 

現在,我得到的是錯誤它找不到我的存儲過程(「sqlexception找不到存儲過程」)。 我在web配置中測試了連接字符串,並且它也正常工作。

它在IDataReader調用中失敗。

任何人都可以幫我解決這個問題嗎?

p.s. - 我試圖創建一個方法來執行存儲過程而不給它任何參數並將其作爲DataTable檢索。

+0

「我得到的錯誤是它無法找到我的存儲過程」發佈EXACT異常,即複製粘貼其文本。另外,請修正問題的標題,以便反映您遇到的實際問題。 – BCdotWEB

+0

完成。 請告訴我這是否更適合? @BCdotWEB –

+0

在存儲過程名稱中是否有拼寫錯誤?你真的連接到正確的數據庫嗎?你有資格存儲過程的所有者(即dbo ..)很難看出問題是什麼,但線索是在例外 - SQL服務器找不到你要求的。 –

回答

1

更新

我設法解決這個問題。 的問題是與SqlDatabase sqlDB; 它救了一個老的連接字符串我只是需要一個更新的構造看起來像這樣:

public static SqlDatabase SqlDB(string connectionString) 
    { 
     if (sqlDB == null || sqlDB.ConnectionString != connectionString) 
     { 
      sqlDB = CreateConnection(connectionString); 
     } 
     return sqlDB; 
    } 

和它的工作就像一個魅力。 感謝任何幫助過我的人。