SQL连接错误消息

问题描述:

我想在引发异常时将错误消息记录到数据库。这个想法是将异常记录到数据库中,以便稍后进行调查。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();

错误是相当清楚的:SQL Server提供不知道的Exception兼容列类型。

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

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

谢谢@CodeCaster。将其转换为一个字符串工作。 –

我会用

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

错误与op没有指定的数据类型有关。宣布正确的类型将消除这一点 – simon1230756