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;
沒有留言:
張貼留言