2015-05-29 173 views
0

我想在引發異常時將錯誤消息記錄到數據庫。這個想法是將異常記錄到數據庫中,以便稍後進行調查。SQL連接錯誤消息

這是代碼:

private void btnGroundMVC_Click(object sender, RoutedEventArgs e) 
    { 
    try 
      { 
       Process.Start(Library.paiplib.GroundMVC); 
      } 
      catch (Exception ex) 
      { 
       SqlConnection sqlconn = new SqlConnection(connectionString); 
       String timeStamp = Library.staticlib.getTimestamp(DateTime.Now); 
       SqlCommand cmd = new SqlCommand(errorlog, sqlconn); 

       cmd.Parameters.AddWithValue("@timeStamp", timeStamp); 
       cmd.Parameters.AddWithValue("@ex", ex); 

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

       MessageBox.Show(Library.paiplib.error + ex,"Error Loading PAIP", MessageBoxButton.OK,MessageBoxImage.Error); 

      } 

這是在調試時的錯誤消息:

「類型 'System.ArgumentException' 的未處理的異常發生在 System.Data.dll中

附加信息:不存在從對象類型 System.ArgumentException到已知託管提供程序本機類型的映射。

此說,這是在cmd.ExecuteNonQuery();

回答

2

錯誤是相當清楚的:SQL Server提供不知道的Exception兼容列類型。

如果你只是想保存異常的字符串表示:

cmd.Parameters.AddWithValue("@ex", ex.ToString()); 
+0

謝謝@CodeCaster。將其轉換爲一個字符串工作。 –

-1

我會用

cmd.Parameters.Add("@ex", SqlDbType.NVarChar).Value 
+0

錯誤與op沒有指定的數據類型有關。宣佈正確的類型將消除這一點 – simon1230756