• [ASP.net]数据访层 (转)


    DbConnection.cs
    using System;
    using System.Data.SqlClient;

    namespace DbControl
    {
        
    /// <summary>
        
    /// 数据库链接
        
    /// </summary>

        public class DbConnection
        
    {
            
    //SQL数据库链接字符串
            private string _strSqlConnection = System.Configuration.ConfigurationSettings.AppSettings[ "SqlConnectionString" ];
            
    //XML文件链接字符串
            private string _strXmlConnection = string.Empty;

            
    public string ConnectionString
            
    {
                
    get
                
    {
                    
    return _strSqlConnection;
                }

                
    set
                
    {
                    
    this._strSqlConnection = System.Configuration.ConfigurationSettings.AppSettings[ value ];
                }

            }


            
    public SqlConnection SqlConnectionString
            
    {
                
    get
                
    {
                    
    return new SqlConnection( ConnectionString );
                }

            }


            
    public string XmlConnectionString
            
    {
                
    get
                
    {
                    
    return this._strXmlConnection;
                }

                
    set
                
    {
                    
    this._strXmlConnection = value;
                }

            }


            
    public DbConnection()
            
    {
                
    //
                
    // TODO: 在此处添加构造函数逻辑
                
    //
            }

        }

    }



    AppControl.cs
    using System;
    using System.Data;
    using System.Data.SqlClient;

    namespace DbControl
    {
        
    /// <summary>
        
    /// AppControl 的摘要说明。
        
    /// </summary>

        public class SqlControl : DbConnection
        
    {
            
    private SqlConnection _Conn;
            
    private SqlCommand _Cmd;

            
    public SqlControl()
            
    {
                
    //
                
    // TODO: 在此处添加构造函数逻辑
                
    //
            }


            
    /// <summary>
            
    /// 打开数据库链接
            
    /// </summary>

            private void Open()
            
    {
                
    this._Conn = this.SqlConnectionString;
                
    try
                
    {
                    _Conn.Open();
                }

                
    catch ( System.Exception ex )
                
    {
                    
    throw ex;
                }

            }


            
    /// <summary>
            
    /// 关闭数据库链接
            
    /// </summary>

            private void Close()
            
    {
                
    try
                
    {
                    
    this._Conn.Close();
                }

                
    catch( System.Exception ex )
                
    {
                    
    throw ex;
                }

            }


            
    /// <summary>
            
    /// 运行SQL,返回DataTable数据
            
    /// </summary>
            
    /// <param name="query">SQL语句</param>
            
    /// <returns>返回DataTable</returns>

            public DataTable RunSqlToDataTable( string query )
            
    {
                
    this.Open();
                DataTable objDataTable 
    = new DataTable();
                SqlDataAdapter objAdapter 
    = new SqlDataAdapter( query , _Conn );
                
    try
                
    {
                    objAdapter.Fill( objDataTable );
                }

                
    catch( System.Exception ex )
                
    {
                    
    throw ex;
                }

                
    finally
                
    {
                    
    this.Close();
                }

                
    return objDataTable;
            }


            
    /// <summary>
            
    /// 执行SQL语句,返回单个值
            
    /// </summary>
            
    /// <param name="query">标准T-SQL语句</param>
            
    /// <returns>返回string</returns>

            public string RunSqlToResult( string query )
            
    {
                
    this.Open();
                
    this._Cmd = new SqlCommand( query,this._Conn );
                System.Text.StringBuilder strResult 
    = new System.Text.StringBuilder();
                
    try
                
    {
                    strResult.Append( 
    this._Cmd.ExecuteScalar() );
                }

                
    catch( System.Exception ex )
                
    {
                    
    throw ex;
                }

                
    finally
                
    {
                    
    this.Close();
                }

                
    return strResult.ToString();
            }


            
    /// <summary>
            
    /// 运行单个SQL的相关操作
            
    /// </summary>
            
    /// <param name="query">SQL语句</param>
            
    /// <returns>返回AppControl</returns>

            public SqlControl ExecuteNonQuery( string query )
            
    {
                
    this.Open();
                _Cmd 
    = new SqlCommand( query , _Conn );
                
    try
                
    {
                    _Cmd.ExecuteNonQuery();
                }

                
    catch( System.Exception ex )
                
    {
                    
    throw ex;
                }

                
    finally
                
    {
                    
    this.Close();
                }

                
    return this;
            }


            
    /// <summary>
            
    /// 按事务执行SQL语句数组
            
    /// </summary>
            
    /// <param name="query">标准T-SQL语句数组</param>
            
    /// <returns>返回AppControl</returns>

            public SqlControl ExecuteNonQuery( string[] query )
            
    {
                
    this.Open();
                
    this._Cmd = new SqlCommand();
                SqlTransaction objTran 
    = this._Conn.BeginTransaction();
                
    this._Cmd.Connection = this._Conn;
                
    this._Cmd.Transaction = objTran;
                
    try
                
    {
                    
    for ( int i=0 ; i<query.Length ; i++ )
                    
    {
                        
    this._Cmd.CommandText = query[i];
                        
    this._Cmd.ExecuteNonQuery();
                    }

                    objTran.Commit();
                }

                
    catch( System.Exception ex )
                
    {
                    objTran.Rollback();
                    
    throw ex;
                }

                
    finally
                
    {
                    
    this.Close();
                }

                
    return this;
            }



            
    /// <summary>
            
    /// 执行SQL语句,返回SqlDataReader.
            
    /// </summary>
            
    /// <param name="query">标准SQL语句</param>
            
    /// <returns>返回DataReader</returns>

            public SqlDataReader RunSqlToDataReader( string query )
            
    {
                
    this.Open();
                
    this._Cmd = new SqlCommand( query , this._Conn );
                SqlDataReader objDataReader;
                
    try
                
    {
                    objDataReader 
    = this._Cmd.ExecuteReader();
                }

                
    catch( System.Exception ex )
                
    {
                    
    throw ex;
                }

                
    finally
                
    {
                    
    this.Close();
                }

                
    return objDataReader;
            }


            
    /// <summary>
            
    /// 运行存储过程(有参数,无输出)
            
    /// </summary>
            
    /// <param name="procedureName">存储过程名</param>
            
    /// <param name="parameters">存储过程参数数组</param>
            
    /// <returns>返回AppControl</returns>

            public SqlControl RunProcedure( string procedureName,SqlParameter[] parameters )
            
    {
                
    this.Open();
                
    this._Cmd = this.MakeProcedure( procedureName,parameters );
                
    try
                
    {
                    
    this._Cmd.ExecuteNonQuery();
                }

                
    catch( System.Exception ex )
                
    {
                    
    throw ex;
                }

                
    finally
                
    {
                    
    this.Close();
                }

                
    return this;
            }


            
    /// <summary>
            
    /// 运行存储过程(无参数,无输出)
            
    /// </summary>
            
    /// <param name="procedureName">存储过程名</param>
            
    /// <returns>返回AppControl</returns>

            public SqlControl RunProcedure( string procedureName )
            
    {
                
    this.Open();
                
    this._Cmd = this.MakeProcedure( procedureName,null );
                
    try
                
    {
                    
    this._Cmd.ExecuteNonQuery();
                }

                
    catch( System.Exception ex )
                
    {
                    
    throw ex;
                }

                
    finally
                
    {
                    
    this.Close();
                }

                
    return this;
            }


            
    /// <summary>
            
    /// 运行存储过程(无参数,有输出)
            
    /// </summary>
            
    /// <param name="procedureName">存储过程名</param>
            
    /// <param name="parametersOutput">存储过程输出参数数组</param>
            
    /// <returns>返回AppControl</returns>

            public SqlControl RunProcedure( string procedureName,ref SqlParameter[] parametersOutput )
            
    {
                
    this.Open();
                
    this._Cmd = this.MakeProcedure( procedureName,parametersOutput );
                
    try
                
    {
                    
    this._Cmd.ExecuteNonQuery();
                }

                
    catch( System.Exception ex )
                
    {
                    
    throw ex;
                }

                
    finally
                
    {
                    
    this.Close();
                }

                
    return this;
            }


            
    /// <summary>
            
    /// 运行存储过程(有参数,无输出)
            
    /// </summary>
            
    /// <param name="procedureName">存储过程名</param>
            
    /// <param name="parameters">存储过程参数数组</param>
            
    /// <returns>返回DataTable</returns>

            public DataTable RunProcedureToDataTable( string procedureName,SqlParameter[] parameters )
            
    {
                
    this.Open();
                
    this._Cmd = this.MakeProcedure( procedureName,parameters );
                DataTable objDataTable 
    = new DataTable();
                
    try
                
    {
                    
    this._Cmd.ExecuteNonQuery();
                    SqlDataAdapter objAdapter 
    = new SqlDataAdapter( this._Cmd );
                    objAdapter.Fill( objDataTable );
                }

                
    catch( System.Exception ex )
                
    {
                    
    throw ex;
                }

                
    finally
                
    {
                    
    this.Close();
                }

                
    return objDataTable;
            }


            
    /// <summary>
            
    /// 运行存储过程(有参数,有输出)
            
    /// </summary>
            
    /// <param name="procedureName">存储过程名</param>
            
    /// <param name="parametersInput">存储过程输入参数数组</param>
            
    /// <param name="parametersOutput">存储过程输出参数数组</param>
            
    /// <returns>返回DataTable</returns>

            public DataTable RunProcedureToDataTable( string procedureName,SqlParameter[] parametersInput,ref SqlParameter[] parametersOutput )
            
    {
                
    this.Open();
                
    this._Cmd = this.MakeProcedure( procedureName,parametersInput );
                
    if ( parametersOutput != null )
                
    {
                    
    foreach( SqlParameter parameter in parametersOutput )
                    
    {
                        
    this._Cmd.Parameters.Add( parameter );
                    }

                }

                DataTable objDataTable 
    = new DataTable();
                
    try
                
    {
                    
    this._Cmd.ExecuteNonQuery();
                    SqlDataAdapter objAdapter 
    = new SqlDataAdapter( this._Cmd );
                    objAdapter.Fill( objDataTable );
                }

                
    catch( System.Exception ex )
                
    {
                    
    throw ex;
                }

                
    finally
                
    {
                    
    this.Close();
                }

                
    return objDataTable;
            }


            
    /// <summary>
            
    /// 运行存储过程(无参数)
            
    /// </summary>
            
    /// <param name="procedureName">存储过程名</param>
            
    /// <returns>返回DataTable</returns>

            public DataTable RunProcedureToDataTable( string procedureName )
            
    {
                
    this.Open();
                
    this._Cmd = this.MakeProcedure( procedureName,null );
                DataTable objDataTable 
    = new DataTable();
                
    try
                
    {
                    
    this._Cmd.ExecuteNonQuery();
                    SqlDataAdapter objAdapter 
    = new SqlDataAdapter( this._Cmd );
                    objAdapter.Fill( objDataTable );
                }

                
    catch( System.Exception ex )
                
    {
                    
    throw ex;
                }

                
    finally
                
    {
                    
    this.Close();
                }

                
    return objDataTable;
            }


            
    /// <summary>
            
    /// 建立存储过程
            
    /// </summary>
            
    /// <param name="procedureName">存储过程名</param>
            
    /// <param name="parameters">存储过程参数数组</param>
            
    /// <returns>返回AppControl</returns>

            private SqlCommand MakeProcedure( string procedureName,SqlParameter[] parameters )
            
    {
                SqlCommand objCmd 
    = new SqlCommand( procedureName,this._Conn );
                objCmd.CommandType 
    = CommandType.StoredProcedure;
                
    if ( parameters != null )
                
    {
                    
    foreach( SqlParameter sqlParamet in parameters )
                    
    {
                        objCmd.Parameters.Add( sqlParamet );
                    }

                }

                
    return objCmd;
            }


            
    /// <summary>
            
    /// 多表查询
            
    /// </summary>
            
    /// <param name="query">标准SQL语句集</param>
            
    /// <returns>返回DataSet</returns>

            public DataSet RunSqlToDataSet( string[] query )
            
    {
                
    this.Open();
                DataSet objDataSet 
    = new DataSet();
                SqlDataAdapter objAdapter 
    = new SqlDataAdapter();
                
    this._Cmd = new SqlCommand();
                
    this._Cmd.Connection = this._Conn;
                objAdapter.SelectCommand 
    = this._Cmd;
                
    try
                
    {
                    
    for ( int i=0 ; i<query.Length ; i++ )
                    
    {
                        objAdapter.SelectCommand.CommandText 
    = query[i];
                        objAdapter.Fill( objDataSet.Tables.Add() );
                    }

                }

                
    catch( System.Exception ex )
                
    {
                    
    throw ex;
                }

                
    finally
                
    {
                    
    this.Close();
                }

                
    return objDataSet;
            }

        }

    }


  • 相关阅读:
    windows10的子系统linux(wsl)
    关于js的比较
    关于parseInt,很神奇
    vue修改数组元素通过arr[0]=val的方式不生效
    wps表格 VLookUp 函数
    青年大学习_收集截图方案
    个人记录_uwsgi,nginx与django之间的关系以及各自的作用
    Ubuntu16.04系统中创建新用户
    idea 启动或debug springboot web项目特别慢的解决方案
    利用Aop实现动态分库分表
  • 原文地址:https://www.cnblogs.com/dagon007/p/159271.html
Copyright © 2020-2023  润新知