C#数据库访问封装类

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情
 
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
 
namespace OperateDatabase_pro
{
    ///<summary>
    /// 本程序为通用数据库访问操作类,可以对SQL SERVER和Access的访问。
    /// 后期版本正在制作当中,将及时更新。
    ///
    /// ***后期版本对此版进行了优化和扩展,大家可以下载对比,大家下载此源码只能仅供交流学习参考之用***
    ///
    ///作者:cnetstart(吴健)
    /// Email:wujian3797@hotmail.com QQ:358122678
    ///网址:http://blog.csdn.net/cnetstar/
    ///★★★★★您可以免费使用此程序,但是请您完整保留此说明,以维护知识产权★★★★★
    ///
    ///</summary>
     public class OperateDatabase
     {
         private System.String m_ConnectionString;
         private System.Boolean m_IsSQLServer;
         private SqlConnection m_SqlConn=new SqlConnection();
         private OleDbConnection m_DbConn=new OleDbConnection();
 
         public OperateDatabase(System.String connectionString,System.Boolean isSQLServer)
         {
              this.m_ConnectionString=connectionString;
              this.m_IsSQLServer=isSQLServer;
         }
    
         ~OperateDatabase()
         {
              this.m_SqlConn.Dispose();
              this.m_DbConn.Dispose();
         }
 
         private void OpenDatabase()
         {
              try
              {
                   if(this.m_IsSQLServer)
                   {
                       if(this.m_SqlConn.State==ConnectionState.Closed)
                       {
                            this.m_SqlConn.ConnectionString=this.m_ConnectionString;
                            this.m_SqlConn.Open();
                       }
                   }
                   else
                   {
                       if(this.m_DbConn.State==ConnectionState.Closed)
                       {
                            this.m_DbConn.ConnectionString=this.m_ConnectionString;
                            this.m_DbConn.Open();
                       }
                   }
              }
              catch(Exception ex)
              {
                   throw new ArgumentException(ex.Message);
              }
         }
 
         private void CloseDatabase()
         {
              try
              {
                   if(this.m_IsSQLServer)
                   {
                       if(this.m_SqlConn.State!=ConnectionState.Closed)
                       {
                            this.m_SqlConn.Close();
                       }
                   }
                   else
                   {
                       if(this.m_DbConn.State!=ConnectionState.Closed)
                       {
                            this.m_DbConn.Close();
                       }
                   }
              }
              catch(Exception ex)
              {
                   throw new ArgumentException(ex.Message);
              }
         }
 
         //for sqlclient and oledb
         public int ExecuteNonquery(System.String sql,System.Boolean isStoredProcedure,params  System.Object[] parameters)
         {
              int iResult=-1;
              try
              {
                   if(this.m_IsSQLServer)
                   {
                       SqlCommand cmd=new SqlCommand(sql,this.m_SqlConn);
                       foreach(System.Object obj in parameters)
                       {
                            cmd.Parameters.Add((SqlParameter)obj);
                       }
                       if(isStoredProcedure)
                       {
                            cmd.CommandType=CommandType.StoredProcedure;
                       }
                       this.OpenDatabase();
                       iResult=cmd.ExecuteNonQuery();
                       cmd.Dispose();
                       this.CloseDatabase(); 
                   }
                   else
                   {
                       OleDbCommand cmd=new OleDbCommand(sql,this.m_DbConn);
                       foreach(System.Object obj in parameters)
                       {
                            cmd.Parameters.Add((OleDbParameter)obj);
                       }
                       if(isStoredProcedure)
                       {
                            cmd.CommandType=CommandType.StoredProcedure;
                       }
                       this.OpenDatabase();
                       iResult=cmd.ExecuteNonQuery();
                       cmd.Dispose();
                       this.CloseDatabase();
                   }
              }
              catch(Exception ex)
              {
                   throw new ArgumentException(ex.Message);
              }
              return iResult;
         }
 
         //for sqlclient only
         public void ExecuteNonquery(System.String[] sql)
         {
              this.OpenDatabase();
              SqlTransaction trans=this.m_SqlConn.BeginTransaction("trans1");
              SqlCommand cmd=new SqlCommand();
              cmd.Connection=this.m_SqlConn;
              cmd.Transaction=trans;
              try
              {
                   foreach(System.String s in sql)
                   {
                       cmd.CommandText=s;
                       cmd.ExecuteNonQuery();
                   }
                   trans.Commit();
              }
              catch(Exception ex)
              {
                   trans.Rollback("trans1");
                   throw new ArgumentException(ex.Message);
              }
              finally
              {
                   this.CloseDatabase();
              }
         }
 
         //for sqlclient and oledb
         public DataSet GetDataSet(System.String sql,System.Boolean isStoredProcedure,params System.Object[] parameters)
         {
              DataSet ds=new DataSet();
              try
              {
                   if(this.m_IsSQLServer)
                   {
                       this.m_SqlConn.ConnectionString=this.m_ConnectionString;
                       SqlCommand cmd=new SqlCommand(sql,this.m_SqlConn);
                       foreach(System.Object obj in parameters)
                       {
                            cmd.Parameters.Add((SqlParameter)obj);
                       }
                       if(isStoredProcedure)
                       {
                            cmd.CommandType=CommandType.StoredProcedure;
                       }
                       SqlDataAdapter da=new SqlDataAdapter(cmd);
                       da.Fill(ds);
                       da.Dispose();
                       cmd.Dispose();
                   }
                   else
                   {
                       this.m_DbConn.ConnectionString=this.m_ConnectionString;
                       OleDbCommand cmd=new OleDbCommand(sql,this.m_DbConn);
                       foreach(System.Object obj in parameters)
                       {
                            cmd.Parameters.Add((OleDbParameter)obj);
                       }
                       if(isStoredProcedure)
                       {
                            cmd.CommandType=CommandType.StoredProcedure;
                       }
                       OleDbDataAdapter da=new OleDbDataAdapter(cmd);
                       da.Fill(ds);
                       da.Dispose();
                       cmd.Dispose();
                   }
              }
              catch(Exception ex)
              {
                   throw new ArgumentException(ex.Message);
              }
              return ds;
         }
 
         //for sqlclient and oledb
         public System.Object ExecuteScalar(System.String sql,System.Boolean isStoredProcedure,params System.Object[] parameters)
         {
              System.Object obj=null;
              try
              {
                   if(this.m_IsSQLServer)
                   {
                       SqlCommand cmd=new SqlCommand(sql,this.m_SqlConn);
                       foreach(System.Object o in parameters)
                       {
                            cmd.Parameters.Add((SqlParameter)o);
                       }
                       if(isStoredProcedure)
                       {
                            cmd.CommandType=CommandType.StoredProcedure;
                       }
                       this.OpenDatabase();
                       obj=cmd.ExecuteScalar();
                       cmd.Dispose();
                       this.CloseDatabase();
                   }
                   else
                  {
                       OleDbCommand cmd=new OleDbCommand(sql,this.m_DbConn);
                       foreach(System.Object o in parameters)
                       {
                            cmd.Parameters.Add((OleDbParameter)o);
                       }
                       if(isStoredProcedure)
                       {
                            cmd.CommandType=CommandType.StoredProcedure;
                       }
                       this.OpenDatabase();
                       obj=cmd.ExecuteScalar();
                       cmd.Dispose();
                       this.CloseDatabase();
                   }
              }
              catch(Exception ex)
              {
                   throw new ArgumentException(ex.Message);
              }
              return obj;
         }
     }
}
 
c#.NET万能数据库访问封装类(ACCESS、SQLServer、Oracle) 立即下载

相关推荐

2009 年C#史上封装最完美的数据访问

2009 年C#史上封装最完美的数据访问类,开发C#最强的数据访问类。

.NET通用访问数据库类(C#版)

      在数据库应用程序的开发中,往往一个应用程序要从多个数据库中取得所要的业务数据。对于ADO.NET更是如此,一个DataSet,可能是从几个数据库中取得的数据集合。为此开发一个访问数据库通用接口显得更为方便、灵活。下面是一个针对.NET提供的四种访问数据库的通用类,每个类都有具体实现了一些常用访问数据库的方法。对于UpdateDataSet 方法,要考虑数据更新的并发冲突,就目前还没有一

FenceKing的专栏 3049

c#NET万能数据库访问封装类(ACCESS、SQLServer、Oracle)文库[归类].pdf

c#NET万能数据库访问封装类(ACCESS、SQLServer、Oracle)文库[归类].pdf

我这里面所用的DBHelper

1 using System; 2 using System.Collections; 3 using System.Collections.Specialized; 4 using System.Data; 5 using System.Data.SqlClient; 6 using System.Configuration; 7 usi...

anhuanjiaoci044699的博客 243

C# .NET万能数据库访问封装类(ACCESS、SQLServer、Oracle)

在app.config文件中写上数据库中连接信息:   appSettings>       add key="connectionstring" value="Data Source=LocalHost;Initial Catalog=Test001;User ID=sa;Password=aaaaaa" />       add key="DataType" value="SqlServ

u011269801的专栏 3075

c 封装 oracle数据库封装,C#.NET万能数据库访问封装类(ACCESS、SQLServer、Oracle)

在app.config文件中写上数据库中连接信息:app.config文件中代码解析:小注:同理web程序,可以把数据库连接信息放到web.config中。C#.NET万能数据库访问封装类代码如下:(该代码来自百度文库,非自己编写)using System;using System.Linq;using System.Text;using System.Collections;using Syst...

weixin_36199877的博客 542

C# SQLite数据库 访问封装类

在客户端配置文件<configuration>节点下,添加: <connectionStrings> <add name="localdb" connectionString="Data Source=config/local.db;Version=3;UseUTF16Encoding=True;" providerNa...

weixin_34032792的博客 450

C#.NET万能数据库访问封装类(ACCESS、SQLServer、Oracle)

在app.config文件中写上数据库中连接信息: app.config文件中代码解析:        小注: 同理web程序,可以把数据库连接信息放到web.config中。C#.NET万能数据库访问封装类代码如下:(该代码来自百度文库,非自己编写)using System;using System.Linq;using System.Text;using System.C

勿忘初心 3474

C# SQLite数据库 访问封装类

在客户端配置文件&lt;configuration&gt;节点下,添加:[html] view plain copy&lt;connectionStrings&gt;      &lt;add name="localdb" connectionString="Data Source=config/local.db;Version=3;UseUTF16Encoding=True;" provider...

imxiangzi的专栏 2987

【小白专用 已验证24.6.7】C# MySQL数据库访问操作封装类

【小白专用 已验证24.6.7】C# MySQL数据库访问操作封装类

zgscwxd的博客 334
上一篇: 孤独的人
cnetstar
博客等级 码龄20年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值