zoukankan      html  css  js  c++  java
  • C#异常处理表、类、SQL

    表SQL

    /****** Object:  Table [dbo].[IError]    Script Date: 09/05/2012 17:00:41 ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    SET ANSI_PADDING OFF
    GO
    
    CREATE TABLE [dbo].[IError](
    	[ErrorModuleID] [varchar](500) NOT NULL,
    	[ErrorClassName] [varchar](50) NULL,
    	[ErrorMethodName] [varchar](50) NULL,
    	[ErrorMessage] [varchar](1000) NOT NULL,
    	[ErrorSource] [varchar](1000) NULL,
    	[ErrorStackTrace] [varchar](1000) NULL,
    	[ErrorTargetSite] [varchar](1000) NULL,
    	[ErrorSQL] [varchar](8000) NULL,
    	[subCode] [varchar](20) NULL,
    	[subName] [varchar](20) NULL,
    	[subMachine] [varchar](20) NULL,
    	[subTime] [datetime] NULL
    ) ON [PRIMARY]
    
    GO
    
    SET ANSI_PADDING OFF
    GO
    

      保存异常信息到IError存储过程:

    /*
    功                 能 :保存异常信息到IError
    涉       及        表 :IError
    */
    ALTER PROCEDURE [dbo].[pt_ErrorSaveError]
    @ErrorModuleID varchar(500),
    @ErrorClassName varchar(50),
    @ErrorMethodName varchar(50),
    @ErrorMessage varchar(1000),
    @ErrorSource varchar(1000),
    @ErrorStackTrace varchar(1000),
    @ErrorTargetsite varchar(1000),
    @subCode  varchar(50),
    @subName  varchar(50),
    @subMachine  varchar(50),
    @ErrorSQL varchar(4000)
    AS
    declare @subTime datetime
    set @subTime = getdate()
    insert into IError (ErrorModuleID,ErrorClassName,ErrorMethodName,ErrorMessage,ErrorSource,ErrorStackTrace,ErrorTargetsite,ErrorSQL,subCode,subName,subMachine,subTime)
    values (@ErrorModuleID,@ErrorClassName,@ErrorMethodName,@ErrorMessage,@ErrorSource,@ErrorStackTrace,@ErrorTargetsite,@ErrorSQL,@subCode,@subName,@subMachine,@subTime)
    

     SaveError 类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Text;
    using System.Data.SqlClient;
    using System.Data;
    using System.IO;
    
    namespace Common
    {
        public partial class SaveError
        {
            private string strConnection = "Data Source=127.0.0.1;Initial Catalog=SysAdmin;Persist Security Info=True;User ID=sa;Password=123";		//连接字符串					
            private SqlConnection conn;										//数据库连接 
            private SqlCommand comm;										//SqlCommand
    
    
            //打开连接
            public bool OpenConn()
            {
                bool bResult = false;
    
                if (this.conn == null)
                {
                    StringBuilder strBd = new StringBuilder();
                    strBd.Append("时间: " + System.DateTime.Now.ToString() + System.Environment.NewLine);
                    strBd.Append("Message: 数据库连接失败,SqlConnection为空" + System.Environment.NewLine);
                    this.SaveErrorMessageToFile(strBd.ToString());
                    bResult = false;
                }
                else
                {
                    if (this.conn.State != System.Data.ConnectionState.Open)
                    {
                        if (this.conn.ConnectionString.Length == 0)
                        {
                            this.conn.ConnectionString = this.strConnection;
                        }
                        try
                        {
                            this.conn.Open();
                            bResult = true;
                        }
                        catch (Exception)
                        {
                            bResult = false;
                        }
                    }
                    else
                    {
                        bResult = true;
                    }
                }
    
                return bResult;
            }
    
            //释放关闭连接
            public void DisposeConn()
            {
                if (this.conn != null && this.conn.State == System.Data.ConnectionState.Open)
                {
                    this.conn.Close();
                    this.conn = null;
                }
            }
    
            /// <summary>
            /// 获取登陆用户信息,保存到错误日志中
            /// </summary>
            /// <param name="UserCode"></param>
            /// <param name="UserName"></param>
            /// <returns></returns>
            public bool GetUserInfo(out string UserCode, out string UserName)
            {
                UserCode = "01211231";
                UserName = "测试";
                return true;
            }
    
            #region 保存异常专业存储过程,使用专用方法,防止第归错误,此方法中如果出现错误记录文本文件
    
            public bool SaveErrorMessageToDB(System.Exception e, string ErrorSQL)
            {
                bool bRelult = false;
                using (this.conn = new SqlConnection(this.strConnection))
                {
                    string UserCode;
                    string UserName;
                    this.GetUserInfo(out UserCode, out UserName);
    
                    System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(true);
                   // int deep = st.FrameCount;
                    string CallClassName = st.GetFrame(2).GetMethod().ReflectedType.FullName;
                    string CallMethodName = st.GetFrame(3).GetMethod().Name;
    
                    string ProcedureName = "SP_SaveError";
                    this.comm = new SqlCommand(ProcedureName, this.conn);
                    this.comm.CommandType = CommandType.StoredProcedure;
                    this.comm.Parameters.Add("@ErrorModuleID", "IDAL");
                    this.comm.Parameters.Add("@ErrorClassName", CallClassName);
                    this.comm.Parameters.Add("@ErrorMethodName", CallMethodName);
                    this.comm.Parameters.Add("@ErrorMessage", e.Message);
                    this.comm.Parameters.Add("@ErrorSource", e.Source);
                    this.comm.Parameters.Add("@ErrorStackTrace", "");//e.StackTrace
                    this.comm.Parameters.Add("@ErrorSQL", ErrorSQL);
                    this.comm.Parameters.Add("@ErrorTargetsite", e.TargetSite.ReflectedType.FullName);
                    this.comm.Parameters.Add("@subCode", UserCode);
                    this.comm.Parameters.Add("@subName", UserName);
                    this.comm.Parameters.Add("@subMachine", System.Environment.MachineName);
    
                    try
                    {
                        if (OpenConn() == false)										//打开连接
                        {
                            return false;
                        }
                        this.comm.ExecuteNonQuery();
                        this.conn.Close();
                        bRelult = true;
                    }
                    catch (SqlException ex)
                    {
                        StringBuilder strBd = new StringBuilder();
                        strBd.Append("时间: " + System.DateTime.Now.ToString() + System.Environment.NewLine);
                        strBd.Append("UserCode: " + UserCode + System.Environment.NewLine);
                        strBd.Append("UserName: " + UserName + System.Environment.NewLine);
                        strBd.Append("Message: " + ex.Message + System.Environment.NewLine);
                        strBd.Append("ConnectionString: " + this.conn.ConnectionString + System.Environment.NewLine);
                        strBd.Append("Source: " + ex.Source + "ErrorSQL:" + ErrorSQL + System.Environment.NewLine);
                        strBd.Append("Server: " + ex.Server + System.Environment.NewLine);
                        strBd.Append("Procedure: " + ex.Procedure + System.Environment.NewLine);
                        strBd.Append("Number: " + ex.Number + System.Environment.NewLine);
                        strBd.Append("StackTrace: " + ex.StackTrace + System.Environment.NewLine + System.Environment.NewLine);
                        strBd.Append("TargetSite: " + ex.TargetSite + System.Environment.NewLine + System.Environment.NewLine);
                        this.SaveErrorMessageToFile(strBd.ToString());
                    }
                    catch (SystemException ex)
                    {
                        StringBuilder strBd = new StringBuilder();
                        strBd.Append("时间: " + System.DateTime.Now.ToString() + System.Environment.NewLine);
                        strBd.Append("UserCode: " + UserCode + System.Environment.NewLine);
                        strBd.Append("UserName: " + UserName + System.Environment.NewLine);
                        strBd.Append("Message: " + ex.Message + System.Environment.NewLine);
                        strBd.Append("ConnectionString: " + this.conn.ConnectionString + System.Environment.NewLine);
                        strBd.Append("Source: " + ex.Source + "ErrorSQL:" + ErrorSQL + System.Environment.NewLine);
                        strBd.Append("StackTrace: " + ex.StackTrace + System.Environment.NewLine + System.Environment.NewLine);
                        strBd.Append("TargetSite: " + ex.TargetSite + System.Environment.NewLine + System.Environment.NewLine);
                        this.SaveErrorMessageToFile(strBd.ToString());
                    }
                    catch (Exception ex)
                    {
                        StringBuilder strBd = new StringBuilder();
                        strBd.Append("时间: " + System.DateTime.Now.ToString() + System.Environment.NewLine);
                        strBd.Append("UserCode: " + UserCode + System.Environment.NewLine);
                        strBd.Append("UserName: " + UserName + System.Environment.NewLine);
                        strBd.Append("Message: " + ex.Message + System.Environment.NewLine);
                        strBd.Append("ConnectionString: " + this.conn.ConnectionString + System.Environment.NewLine);
                        strBd.Append("Source: " + ex.Source + "ErrorSQL:" + ErrorSQL + System.Environment.NewLine);
                        strBd.Append("StackTrace: " + ex.StackTrace + System.Environment.NewLine);
                        strBd.Append("TargetSite: " + ex.TargetSite + System.Environment.NewLine + System.Environment.NewLine);
                        this.SaveErrorMessageToFile(strBd.ToString());
                    }
                    finally
                    {
                        this.DisposeConn();									//释放连接
                        this.comm.Dispose();
                    }
                }
                return bRelult;
            }
    
            /// <summary>
            /// 如果保存异常时出现了错误,写入错误日志文件
            /// </summary>
            /// <param name="ErrorMessage"></param>
            /// <returns></returns>
            public bool SaveErrorMessageToFile(string ErrorMessage)
            {
                bool bResult = false;
    
                string path = "";//System.Environment.SystemDirectory;
                string ServerMapPath = System.Windows.Forms.Application.StartupPath;
    
                if (ServerMapPath != null && ServerMapPath != string.Empty)
                {
                    path = ServerMapPath + @"ErrorDBLog";
                }
                if (Directory.Exists(path) == false)
                {
                    Directory.CreateDirectory(path);
                }
    
                string filePath = path + @"DBError.log";
                StreamWriter sw = null;
                try
                {
                    sw = new StreamWriter(filePath, true);
                    sw.WriteLine(ErrorMessage);
                    bResult = true;
                }
                catch (Exception ex)
                {
                    string Message = ex.Message;
                }
                finally
                {
                    if (sw != null)
                    {
                        sw.Close();
                    }
                }
                return bResult;
            }
            #endregion
    
    
        }
    }
    

     类调用方法:

                try
                {
                    DataSet ds = new DataSet();
                    string strConn="Data Source=127.0.0.1;Initial Catalog=SysAdmin;Persist Security Info=True;User ID=sa;Password=123";
                    string strSQL = "selecl SysID,[SysName] from SubSystem where SysState='OK' order by sysid asc";
                    SqlConnection connection = new SqlConnection(strConn);
                    comm = new SqlCommand(strSQL, connection);
                    connection.Open();
                    object o = comm.ExecuteScalar();
                }
                catch (Exception e)
                {
                    string ErrorSQL = "SQL语句:" + this.comm.CommandText;
                    err.SaveErrorMessageToDB(e, ErrorSQL);			//保存错误信息	
                }
    
  • 相关阅读:
    排序算法——希尔排序
    排序算法——直接插入排序
    排序算法——快速排序
    排序算法——冒泡排序
    一个echarts柱状图hover改变颜色的例子
    vue使用sockjs-client+stompjs进行websocket连接的方法
    vue学习日记:使用vue-cli搭建项目支持ie10和ie11的一些尝试
    vue学习日记:axios拦截器的配置
    vue学习日记:iview组件库的使用
    vue学习日记:vue发送请求
  • 原文地址:https://www.cnblogs.com/xytmj/p/4280063.html
Copyright © 2011-2022 走看看