public void Exception2DB(Exception ex)
{
using (SqlConnection Conn = new SqlConnection(ConnectionString))
{
try
{
SqlCommand cmd = new SqlCommand("dmlException2DBI", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ExceptionTime", SqlDbType.DateTime).Value = DateTime.Now.ToString();
cmd.Parameters.Add("@Source", SqlDbType.Char, 100).Value = ex.Source;
cmd.Parameters.Add("@TargetSize", SqlDbType.Char, 100).Value = ex.TargetSite;
cmd.Parameters.Add("@Message", SqlDbType.NChar, 100).Value = ex.Message;
cmd.Parameters.Add("@StackTrace", SqlDbType.VarChar, 1000).Value = ex.StackTrace;
Conn.Open()
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message , "錯誤" , MessageBoxButtons.OK , MessageBoxIcon.Error);
}
}
該語法一直發生錯誤,錯誤如下圖一個參數一個參數拿掉來測試,才發現 Exception.TargetSite 是回傳 MethodBase,根本就不是 string,Orz
cmd.Parameters.Add("@TargetSize", SqlDbType.Char, 100).Value = ex.TargetSite;
-- 改為
cmd.Parameters.Add("@TargetSize", SqlDbType.Char, 100).Value = ex.TargetSite.Name;
![[C#] 將參數值從 runtimemethodinfo 轉換為 string 失敗](https://farm8.staticflickr.com/7286/26973222972_eb7b24f0f6.jpg)
沒有留言:
張貼留言