我在尝试将错误消息记录到数据库时抛出异常。我们的想法是将异常记录到数据库中,以便以后进行调查。
这是代码:
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();
答案 0 :(得分:2)
错误非常明确:SQL Server提供程序不知道Exception
兼容的列类型。
如果您只想存储异常的字符串表示形式:
cmd.Parameters.AddWithValue("@ex", ex.ToString());
答案 1 :(得分:-1)
我会用
cmd.Parameters.Add("@ex", SqlDbType.NVarChar).Value