`
pake007
  • 浏览: 58166 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
最近访客 更多访客>>
社区版块
存档分类
最新评论

.NET通用访问数据库类(二)

阅读更多

接前一篇文章

SqlDataProvider.cs 访问SQL Server的类

c# 代码
  1. #define DEBUG   
  2. using System;   
  3. using System.Data;   
  4. using System.Data.SqlClient;   
  5.   
  6. namespace DataProviders   
  7. {   
  8.  /// <summary>   
  9.  /// SqlDataProvider 的摘要说明。   
  10.  /// </summary>   
  11.  internal class SqlDataProvider : IDataProvider   
  12.  {   
  13.   private System.Data.SqlClient.SqlConnection sqlConnection;   
  14.   private System.Data.SqlClient.SqlCommand sqlCommand;   
  15.   private string connectionString;   
  16.   public SqlDataProvider() : this(null)   
  17.   {   
  18.    //   
  19.    // TODO: 在此处添加构造函数逻辑   
  20.    //   
  21.   }   
  22.   
  23.   public SqlDataProvider(string connectionString)   
  24.   {    
  25.    if (connectionString == null || connectionString.Trim() == string.Empty)   
  26.    {   
  27.     System.Configuration.AppSettingsReader configurationAppSettings = new System.Configuration.AppSettingsReader();   
  28.     this.connectionString = (string)(configurationAppSettings.GetValue("sqlConnectionString"typeof(string)));   
  29.    }   
  30.    else  
  31.    {    
  32.     this.connectionString = connectionString;   
  33.    }       
  34.   }   
  35.      
  36.   /// <summary>   
  37.   /// SQL 连接字符串   
  38.   /// </summary>   
  39.   public string ConnectionString   
  40.   {   
  41.    get  
  42.    {   
  43.     return this.connectionString;   
  44.    }   
  45.    set  
  46.    {   
  47.     this.connectionString = value;   
  48.    }   
  49.   }    
  50.     
  51.   /// <summary>   
  52.   /// 返回一个带有连接字符串的SQL Connection.   
  53.   /// </summary>   
  54.   /// <returns>OracleConnection</returns>   
  55.   private SqlConnection GetSqlConnection()    
  56.   {   
  57.    try    
  58.    {   
  59.     return new SqlConnection(this.connectionString);   
  60.    }    
  61.    catch (Exception ex)   
  62.    {  
  63. #if DEBUG   
  64.     System.Diagnostics.Debug.WriteLine(ex.ToString());  
  65. #endif   
  66.     return null;   
  67.    }   
  68.   }   
  69.   
  70.   /// <summary>   
  71.   /// 对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于其他所有类型的语句,返回值为 -1   
  72.   /// </summary>   
  73.   /// <param name="Sql">UPDATE、INSERT 和 DELETE 语句</param>   
  74.   public int ExecuteNonQuery(string sql)   
  75.   {   
  76.    using(sqlConnection = this.GetSqlConnection())   
  77.    {   
  78.     if (sqlConnection == null)   
  79.      return -1;   
  80.     try  
  81.     {   
  82.      if (sqlConnection.State == System.Data.ConnectionState.Closed)   
  83.       sqlConnection.Open();        
  84.      sqlCommand = new SqlCommand(sql, sqlConnection);   
  85.      return sqlCommand.ExecuteNonQuery();   
  86.     }   
  87.     catch (Exception ex)   
  88.     {    
  89. #if DEBUG   
  90.      System.Diagnostics.Debug.WriteLine(ex.ToString());  
  91. #endif     
  92.      return -1;   
  93.     }       
  94.    }   
  95.   }   
  96.   
  97.   /// <summary>   
  98.   /// 执行查询,并将查询返回的结果集中第一行的第一列作为 .NET Framework 数据类型返回。忽略额外的列或行。   
  99.   /// </summary>   
  100.   /// <param name="sql">SELECT 语句</param>   
  101.   /// <returns>.NET Framework 数据类型形式的结果集第一行的第一列;如果结果集为空或结果为 REF CURSOR,则为空引用</returns>   
  102.   public object ExecuteScalar(string sql)   
  103.   {      
  104.    using(sqlConnection = this.GetSqlConnection())   
  105.    {   
  106.     if (sqlConnection == null)   
  107.      return null;   
  108.     try  
  109.     {   
  110.      if (sqlConnection.State == System.Data.ConnectionState.Closed)   
  111.       sqlConnection.Open();        
  112.      sqlCommand = new SqlCommand(sql, sqlConnection);   
  113.      return sqlCommand.ExecuteScalar();   
  114.     }   
  115.     catch (Exception ex)   
  116.     {   
  117. #if DEBUG   
  118.      System.Diagnostics.Debug.WriteLine(ex.ToString());  
  119. #endif    
  120.      return null;   
  121.     }       
  122.    }   
  123.   }   
  124.     
  125.   /// <summary>   
  126.   ///  执行单Sql语句查询,并将查询返回的结果作为一个数据集返回   
  127.   /// </summary>   
  128.   /// <param name="sql">SELECT 语句</param>   
  129.   /// <returns>数据集 DataSet</returns>    
  130.   public DataSet RetriveDataSet(string sql)   
  131.   {      
  132.    if (sql == null || sql == string.Empty)   
  133.    {  
  134. #if DEBUG   
  135.     System.Diagnostics.Debug.WriteLine("sql 为空");   
  136. #endif   
  137.     return null;   
  138.    }      
  139.    using(sqlConnection = this.GetSqlConnection())   
  140.    {     
  141.     if (sqlConnection == null)   
  142.      return null;   
  143.     using(SqlDataAdapter da = new SqlDataAdapter(sql, sqlConnection))   
  144.     {   
  145.      DataSet ds = new DataSet();   
  146.      try  
  147.      {   
  148.       da.Fill(ds);   
  149.      }        
  150.      catch (Exception ex)   
  151.      {  
  152. #if DEBUG   
  153.       System.Diagnostics.Debug.WriteLine(ex.ToString());   
  154. #endif   
  155.      }        
  156.      return ds;   
  157.     }      
  158.    }      
  159.   }    
  160.     
  161.   /// <summary>   
  162.   /// 执行Sql数组语句查询,并将查询返回的结果作为一个数据集返回   
  163.   /// </summary>   
  164.   /// <param name="sql">Select 语句数组</param>   
  165.   /// <param name="tableName">TableName</param>   
  166.   /// <returns>数据集 DataSet</returns>   
  167.   public DataSet RetriveDataSet(string[] sql, params string[] tableName)   
  168.   {   
  169.    int sqlLength;   
  170.    sqlLength = sql.Length;   
  171.    if ( sqlLength == 0)   
  172.    {  
  173. #if DEBUG   
  174.     System.Diagnostics.Debug.WriteLine("sql 为空");  
  175. #endif   
  176.     return null;   
  177.    }     
  178.    using(sqlConnection = this.GetSqlConnection())   
  179.    {     
  180.     if (sqlConnection == null)   
  181.      return null;   
  182.     DataSet ds = new DataSet();   
  183.     int tableNameLength = tableName.Length;   
  184.     for (int i = 0; i < sqlLength; i++)   
  185.     {   
  186.      using(SqlDataAdapter da = new SqlDataAdapter(sql[i], sqlConnection))   
  187.      {    
  188.       try  
  189.       {         
  190.        if (i < tableNameLength)   
  191.         da.Fill(ds, tableName[i]);   
  192.        else  
  193.         da.Fill(ds, "table" + i);          
  194.       }         
  195.       catch (Exception ex)   
  196.       {  
  197. #if DEBUG   
  198.        System.Diagnostics.Debug.WriteLine(ex.ToString());  
  199. #endif   
  200.        return null;   
  201.       }   
  202.      }    
  203.     }   
  204.     return ds;     
  205.    }      
  206.   }   
  207.   
  208.   public DataSet UpdateDataSet(string sql, DataSet hasChangesDataSet)   
  209.   {   
  210.    return null;   
  211.   }   
  212.   
  213.   public void Dispose()   
  214.   {   
  215.    this.connectionString = null;   
  216.    this.sqlCommand.Dispose();   
  217.    this.sqlConnection.Dispose();   
  218.   }   
  219.   
  220.  }   
  221. }   
  222.   
  223. OdbcDataProvider.cs 提供ODBC连接访问的类  
  224.  
  225. #define DEBUG   
  226. using System;   
  227. using System.Data;   
  228. using System.Data.Odbc;   
  229. namespace FenceKing.DataProviders   
  230. {   
  231.  /// <summary>   
  232.  /// OdbcDataProvider 的摘要说明。   
  233.  /// </summary>   
  234.  internal class OdbcDataProvider : IDataProvider   
  235.  {   
  236.   private System.Data.Odbc.OdbcConnection odbcConnection;   
  237.   private System.Data.Odbc.OdbcCommand odbcCommand;   
  238.   private string connectionString;   
  239.   public OdbcDataProvider() : this(null)   
  240.   {   
  241.    //   
  242.    // TODO: 在此处添加构造函数逻辑   
  243.    //   
  244.   }   
  245.   
  246.   public OdbcDataProvider(string connectionString)   
  247.   {    
  248.    if (connectionString == null || connectionString.Trim() == string.Empty)   
  249.    {   
  250.     System.Configuration.AppSettingsReader configurationAppSettings = new System.Configuration.AppSettingsReader();   
  251.     this.connectionString = (string)(configurationAppSettings.GetValue("odbcConnectionString"typeof(string)));   
  252.    }   
  253.    else  
  254.    {    
  255.     this.connectionString = connectionString;   
  256.    }       
  257.   }   
  258.      
  259.   /// <summary>   
  260.   /// Oracle 连接字符串 "User Id=southfence;Data Source=FENCEORA;Password=southfence;Persist Security Info=true;"       
  261.   /// </summary>   
  262.   public string ConnectionString   
  263.   {   
  264.    get  
  265.    {   
  266.     return this.connectionString;   
  267.    }   
  268.    set  
  269.    {   
  270.     this.connectionString = value;   
  271.    }   
  272.   }    
  273.     
  274.   /// <summary>   
  275.   /// 返回一个带有连接字符串的Odbc Connection.   
  276.   /// </summary>   
  277.   /// <returns>OracleConnection</returns>   
  278.   private OdbcConnection GetOdbcConnection()    
  279.   {   
  280.    try    
  281.    {   
  282.     return new OdbcConnection(this.connectionString);   
  283.    }    
  284.    catch (Exception ex)   
  285.    {  
  286. #if DEBUG   
  287.     System.Diagnostics.Debug.WriteLine(ex.ToString());  
  288. #endif    
  289.     return null;   
  290.    }   
  291.   }   
  292.   
  293.   /// <summary>   
  294.   /// 对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于其他所有类型的语句,返回值为 -1   
  295.   /// </summary>   
  296.   /// <param name="Sql">UPDATE、INSERT 和 DELETE 语句</param>   
  297.   public int ExecuteNonQuery(string sql)   
  298.   {   
  299.    using(odbcConnection = this.GetOdbcConnection())   
  300.    {   
  301.     if (odbcConnection == null)   
  302.      return -1;   
  303.     try  
  304.     {   
  305.      if (odbcConnection.State == System.Data.ConnectionState.Closed)   
  306.       odbcConnection.Open();        
  307.      odbcCommand = new OdbcCommand(sql, odbcConnection);   
  308.      return odbcCommand.ExecuteNonQuery();   
  309.     }   
  310.     catch (Exception ex)   
  311.     {   
  312. #if DEBUG   
  313.      System.Diagnostics.Debug.WriteLine(ex.ToString());  
  314. #endif   
  315.      return -1;   
  316.     }       
  317.    }   
  318.   }   
  319.   
  320.   /// <summary>   
  321.   /// 执行查询,并将查询返回的结果集中第一行的第一列作为 .NET Framework 数据类型返回。忽略额外的列或行。   
  322.   /// </summary>   
  323.   /// <param name="sql">SELECT 语句</param>   
  324.   /// <returns>.NET Framework 数据类型形式的结果集第一行的第一列;如果结果集为空或结果为 REF CURSOR,则为空引用</returns>   
  325.   public object ExecuteScalar(string sql)   
  326.   {      
  327.    using(odbcConnection = this.GetOdbcConnection())   
  328.    {   
  329.     if (odbcConnection == null)   
  330.      return null;   
  331.     try  
  332.     {   
  333.      if (odbcConnection.State == System.Data.ConnectionState.Closed)   
  334.       odbcConnection.Open();   
  335.      odbcCommand = new OdbcCommand(sql, odbcConnection);   
  336.      return odbcCommand.ExecuteScalar();   
  337.     }   
  338.     catch (Exception ex)   
  339.     {   
  340. #if DEBUG   
  341.      System.Diagnostics.Debug.WriteLine(ex.ToString());  
  342. #endif   
  343.      return null;   
  344.     }       
  345.    }   
  346.   }   
  347.   
  348.   /// <summary>   
  349.   ///  执行单Sql语句查询,并将查询返回的结果作为一个数据集返回   
  350.   /// </summary>   
  351.   /// <param name="selectSql">SELECT 语句</param>   
  352.   /// <returns>数据集 DataSet</returns>   
  353.   public DataSet RetriveDataSet(string sql)   
  354.   {      
  355.    if (sql == null || sql == string.Empty)   
  356.    {  
  357. #if DEBUG   
  358.     System.Diagnostics.Debug.WriteLine("sql 为空");      
  359. #endif   
  360.     return null;   
  361.    }      
  362.    using(odbcConnection = this.GetOdbcConnection())   
  363.    {     
  364.     if (odbcConnection == null)   
  365.      return null;   
  366.     using( OdbcDataAdapter da = new OdbcDataAdapter(sql, odbcConnection))   
  367.     {   
  368.      DataSet ds = new DataSet();   
  369.      try  
  370.      {   
  371.       da.Fill(ds);   
  372.      }        
  373.      catch (Exception ex)   
  374.      {  
  375. #if DEBUG   
  376.       System.Diagnostics.Debug.WriteLine(ex.ToString());  
  377. #endif   
  378.       return null;   
  379.      }        
  380.      return ds;   
  381.     }      
  382.    }      
  383.   }   
  384.   
  385.   
  386.   /// <summary>   
  387.   /// 执行Sql数组语句查询,并将查询返回的结果作为一个数据集返回   
  388.   /// </summary>   
  389.   /// <param name="sql">Select 语句数组</param>   
  390.   /// <param name="tableName">TableName</param>   
  391.   /// <returns>数据集 DataSet</returns>   
  392.   public DataSet RetriveDataSet(string[] sql, params string[] tableName)   
  393.   {   
  394.    int sqlLength;   
  395.    sqlLength = sql.Length;   
  396.    if ( sqlLength == 0)   
  397.    {  
  398. #if DEBUG   
  399.     System.Diagnostics.Debug.WriteLine("sql 为空");  
  400. #endif   
  401.     return null;   
  402.    }     
  403.    using(odbcConnection = this.GetOdbcConnection())   
  404.    {     
  405.     if (odbcConnection == null)   
  406.      return null;   
  407.     DataSet ds = new DataSet();   
  408.     int tableNameLength = tableName.Length;   
  409.     for (int i = 0; i < sqlLength; i++)   
  410.     {   
  411.      using(OdbcDataAdapter da = new OdbcDataAdapter(sql[i], odbcConnection))   
  412.      {    
  413.       try  
  414.       {    
  415.        if (i < tableNameLength)   
  416.         da.Fill(ds, tableName[i]);   
  417.        else  
  418.         da.Fill(ds, "table" + i);         
  419.       }         
  420.       catch (Exception ex)   
  421.       {  
  422. #if DEBUG   
  423.        System.Diagnostics.Debug.WriteLine(ex.ToString());  
  424. #endif   
  425.       }   
  426.      }    
  427.     }   
  428.     return ds;     
  429.    }      
  430.   }   
  431.   
  432.   public DataSet UpdateDataSet(string sql, DataSet hasChangesDataSet)   
  433.   {   
  434.    return null;   
  435.   }   
  436.   
  437.   
  438.   public void Dispose()   
  439.   {   
  440.    this.connectionString = null;   
  441.    this.odbcCommand.Dispose();   
  442.    this.odbcConnection.Dispose();      
  443.   }   
  444.  }   
  445. }   

 

(未完待续。。。)

分享到:
评论

相关推荐

    通用.NET数据库访问类

    这个"通用.NET数据库访问类"是一个设计用于简化数据库操作的C#代码库。它遵循面向接口编程的原则,这使得代码更具有可扩展性和可维护性。下面将详细介绍这个数据库访问类的关键知识点。 首先,接口(Interface)在...

    ASP.NET通用数据库访问组件

    在ASP.NET中,数据库访问通常涉及ADO.NET(ActiveX Data Objects .NET),这是一个用于访问数据库的组件集。然而,直接使用ADO.NET可能需要编写大量的重复代码,尤其是在处理多种数据库时。这就是为什么开发通用...

    Asp.net通用自定义数据库访问类的设计和实现

    总的来说,Asp.NET通用自定义数据库访问类的设计和实现涉及到了Web开发的多个核心技术和原则。通过合理的设计和实现,我们可以构建出高效、稳定且易于维护的管理信息系统,满足研究生信息管理的需求。在实际开发过程...

    SQL数据库通用访问类(ASP.NET)

    ### SQL数据库通用访问类在ASP.NET中的应用与详解 #### 引言 在现代Web开发中,特别是使用ASP.NET框架进行开发时,高效且安全地访问数据库是项目成功的关键因素之一。本文将深入探讨一个专门为ASP.NET设计的SQL...

    .net 通用数据库访问类(优化版 增加MySql)源码

    《.NET通用数据库访问类(优化版 增加MySQL)源码解析》 在.NET开发中,数据库访问层的设计是系统架构中的重要一环。一个优秀的数据库访问类能够极大地提高开发效率,减少代码重复,使得系统更具扩展性和灵活性。本篇...

    c# .net 通用sql数据库访问的类

    c# .net 通用sql数据库访问的类 比较全,有注释

    .NET构建通用数据库访问类

    ### .NET构建通用数据库访问类 在.NET框架中构建一个通用的数据库访问层(DAL)是许多企业级应用中的常见需求。这样的一个访问层能够帮助开发者以一种抽象、统一的方式与不同的数据库系统进行交互,例如SQL Server...

    asp.net 通用数据访问类

    在ASP.NET开发中,创建一个通用数据访问类是提高代码复用性和降低维护成本的重要实践。这个类通常封装了数据库连接、SQL语句执行、事务处理等基础操作,使得业务逻辑层无需直接与数据库交互,从而实现解耦。以下是...

    .net 平台 通用的数据库访问类

    ;database=Grant_Manage;uid=sa;pwd=;" providerName="System.Data.SqlClient"/&gt; &lt;/connectionStrings&gt;

    基于ASP.NET技术的数据库访问通用类设计

    ASP.NET是新一代的B/S系统编程工具,集众多优点于一身,在时数据库的操作上更是功能强大。但是传统的数据访问编程方式操作繁琐,而且重复累赘。...介绍了一种基于ASP.NET技术的数据库访问通用类设计方法

    asp.net的通用数据库访问层源码

    最大特点是简单,使用方便,没有其它DAL那种复杂的配置及使用,如果你正在找一个使用简单,能节省大量时间的数据库访问层,这个也许就是你要找的。13.该类库仅仅是把对数据库操作的常用代码封装而已,并没有真正意义...

    .net oracle数据库访问类

    本教程将详细讲解如何使用ASP.NET创建一个Oracle数据库访问的通用类,主要关注`OracleHelper.cs`这个文件。 首先,`OracleHelper.cs`通常是一个静态类,它封装了Oracle数据库操作的基本方法,如执行SQL查询、存储...

    ASP.NET 通用数据库访问 日志组件

    在这个"ASP.NET 通用数据库访问 日志组件"中,我们关注的核心是数据库访问和日志管理两个方面。 1. **数据库访问**: 在ASP.NET中,数据库访问通常通过ADO.NET或者Entity Framework等数据访问技术实现。ADO.NET是...

    vb.net 数据库访问类

    在VB.NET中,开发人员通常会创建一个通用的数据库访问类来封装所有与数据库相关的操作,例如查询、插入、更新和删除等。这种做法有助于简化代码并提高可维护性。本节将详细介绍如何构建这样的类,并提供具体的代码...

    精心整理的几个ASP.NET通用类

    在这个精心整理的压缩包中,包含了四个核心的ASP.NET通用类,分别用于数据库操作、字符串操作、文件操作以及JavaScript操作。这些类为开发者提供了方便快捷的工具,使得在ASP.NET项目中的常见任务能够更加高效地执行...

    .NET通用数据库访问类(支持存储过程)

    标题中的".NET通用数据库访问类(支持存储过程)"是指一种.NET框架下的编程工具,它提供了一个统一的接口,使得开发者可以方便地访问多种类型的数据库,包括SQLServer、Oracle、MySQL、SQLite、ACCESS以及DB2。...

    .net 通用数据库访问类(优化版)源码

    通用数据库访问类(优化版)源码 通用数据库访问类 通过配置 可实现不同数据库的的访问&def目前实现了SQLserver&def Oracle&def DataAccess 这可节略大量数据库访问代码&def配合我的代码生活成器...

    .net 访问DB2数据库不为人知的秘密_吐血奉献

    这使得远程客户端可以使用 Administration Client、Runtime Client 或 Application Development Client 访问数据库服务器。Application Development Client 组件是一个为数据库应用程序开发者设计的工具集合,包括库...

    利用ADO.NET的体系架构打造通用的数据库访问通用类

    ### 利用ADO.NET的体系架构打造通用的数据库访问通用类 #### 一、引言 在当前软件开发中,数据库访问是几乎所有应用程序的核心部分。为了实现跨平台、跨数据库类型的通用性,开发者通常需要创建一套能够适应多种...

    asp.net通用类

    ASP.NET通用类是ASP.NET开发中的重要组成部分,它是一组可以复用的代码集合,旨在提高开发效率,减少重复工作,并确保代码的统一性和规范性。这些类通常包含各种实用方法,可以处理常见的任务,如数据操作、用户验证...

Global site tag (gtag.js) - Google Analytics