整理了一个多数据库通用操作类
来源:互联网 发布:数据库系统实现 公开课 编辑:程序博客网 时间:2024/05/19 19:14
DataBase.cs
- using System;
- using System.Collections.Generic;
- using System.Web;
- using System.Configuration;
- using System.Data.Common;
- using System.Data;
- using System.Data.SqlClient;
- using System.Collections;
- public enum MyDbType
- {
- MSSQL,
- ORACLE,
- MYSQL,
- ACCESS
- }
- public class DataBase
- {
- private DbConnection cnn;//抽象类型
- private DbCommand cmd;//抽象类型
- private DbProviderFactory provider;
- private string providerName;
- private string connectionString;
- public DataBase() : this(MyDbType.MSSQL)
- {
- }
- public DataBase(MyDbType dbType)
- {
- providerName = ConfigurationManager.ConnectionStrings[dbType.ToString()].ProviderName;
- provider = DbProviderFactories.GetFactory(providerName);
- cnn = provider.CreateConnection();
- cnn.ConnectionString = ConfigurationManager.ConnectionStrings[dbType.ToString()].ConnectionString;
- cmd = provider.CreateCommand();
- cmd.Connection = cnn;
- }
- #region 执行不带参数的SQL语句
- /// <summary>
- /// 执行SQL语句,返回影响的记录数
- /// </summary>
- public int ExecuteSQL(string sql)
- {
- return ExecuteSQL(sql, null);
- }
- /// <summary>
- /// 执行多条SQL语句,实现数据库事务。
- /// </summary>
- public int ExecuteSqlTran(List<string> sqlList)
- {
- int count = -1;
- cnn.Open();
- DbTransaction tx = cnn.BeginTransaction();
- try
- {
- cmd.Transaction = tx;
- for (int n = 0; n < sqlList.Count; n++)
- {
- string strsql = sqlList[n].ToString();
- if (strsql.Trim().Length > 1)
- {
- cmd.CommandText = strsql;
- count = cmd.ExecuteNonQuery();
- }
- }
- tx.Commit();
- }
- catch (SqlException e)
- {
- tx.Rollback();
- cnn.Close();
- throw new Exception(e.Message);
- }
- return count;
- }
- /// <summary>
- /// 执行一条计算查询结果语句,返回查询结果(object)。
- /// </summary>
- public int ExecuteScalar(string sql)
- {
- return ExecuteScalar(sql, null);
- }
- /// <summary>
- /// 执行查询语句,返回DataSet
- /// </summary>
- public DataSet GetDataSet(string sql)
- {
- return GetDataSet(sql, null);
- }
- /// <summary>
- /// 执行查询语句,返回DataSet
- /// </summary>
- public DataTable GetDataTable(string sql)
- {
- return GetDataSet(sql).Tables[0];
- }
- /// <summary>
- /// 执行查询语句,返回DataReader(使用该方法切记要手工关闭DataReader和连接)
- /// </summary>
- public DbDataReader ExecuteReader(string sql)
- {
- return ExecuteReader(sql, null);
- }
- #endregion
- #region 执行带参数的SQL语句
- /// <summary>
- /// 执行SQL语句,返回影响的记录数
- /// </summary>
- public int ExecuteSQL(string sql, params DbParameter[] cmdParms)
- {
- try
- {
- CreateCommand(sql, cmdParms);
- int rows = cmd.ExecuteNonQuery();
- cmd.Parameters.Clear();
- return rows;
- }
- catch (SqlException e)
- {
- cnn.Close();
- throw new Exception(e.Message);
- }
- }
- /// <summary>
- /// 执行多条SQL语句,实现数据库事务。
- /// </summary>
- public int ExecuteSqlTran(Hashtable sqlList)
- {
- int count = -1;
- cnn.Open();
- DbTransaction tx = cnn.BeginTransaction();
- try
- {
- cmd.Transaction = tx;
- foreach (DictionaryEntry myDE in sqlList)
- {
- string cmdText = myDE.Key.ToString();
- DbParameter[] cmdParms = (DbParameter[])myDE.Value;
- CreateCommand(cmdText, cmdParms);
- count = cmd.ExecuteNonQuery();
- }
- tx.Commit();
- }
- catch (SqlException e)
- {
- tx.Rollback();
- cnn.Close();
- throw new Exception(e.Message);
- }
- return count;
- }
- /// <summary>
- /// 执行一条计算查询结果语句,返回查询结果(object)。
- /// </summary>
- public int ExecuteScalar(string sql, params DbParameter[] cmdParms)
- {
- try
- {
- CreateCommand(sql, cmdParms);
- object o = cmd.ExecuteScalar();
- return int.Parse(o.ToString());
- }
- catch (SqlException e)
- {
- cnn.Close();
- throw new Exception(e.Message);
- }
- }
- /// <summary>
- /// 执行查询语句,返回DataSet
- /// </summary>
- public DataSet GetDataSet(string sql, params DbParameter[] cmdParms)
- {
- DataSet ds = new DataSet();
- try
- {
- CreateCommand(sql, cmdParms);
- DbDataAdapter adapter = provider.CreateDataAdapter();
- adapter.SelectCommand = cmd;
- adapter.Fill(ds);
- }
- catch (SqlException e)
- {
- cnn.Close();
- throw new Exception(e.Message);
- }
- return ds;
- }
- /// <summary>
- /// 执行查询语句,返回DataTable
- /// </summary>
- public DataTable GetDataTable(string sql, params DbParameter[] cmdParms)
- {
- return GetDataSet(sql, cmdParms).Tables[0];
- }
- /// <summary>
- /// 执行查询语句,返回DataReader(使用该方法切记要手工关闭DataReader和连接)
- /// </summary>
- public DbDataReader ExecuteReader(string sql, params DbParameter[] cmdParms)
- {
- try
- {
- CreateCommand(sql, cmdParms);
- DbDataReader myReader = cmd.ExecuteReader();
- return myReader;
- }
- catch (SqlException e)
- {
- cnn.Close();
- throw new Exception(e.Message);
- }
- }
- public DbParameter MakeParam(string ParamName, DbType DbType, Int32 Size, object Value)
- {
- DbParameter Param = cmd.CreateParameter();
- Param.ParameterName = ParamName;
- Param.DbType = DbType;
- if(Size > 0)
- Param.Size = Size;
- if (Value != null)
- Param.Value = Value;
- return Param;
- }
- private DbCommand CreateCommand(string cmdText, DbParameter[] Prams)
- {
- return CreateCommand(CommandType.Text, cmdText, Prams);
- }
- private DbCommand CreateCommand(CommandType cmdType, string cmdText, DbParameter[] Prams)
- {
- if (cnn.State != ConnectionState.Open)
- cnn.Open();
- cmd.CommandType = cmdType;
- cmd.CommandText = cmdText;
- if (Prams != null)
- {
- cmd.Parameters.Clear();
- foreach (DbParameter Parameter in Prams)
- cmd.Parameters.Add(Parameter);
- }
- return cmd;
- }
- public DataSet GetDataSetByProc(string ProcName, DbParameter[] Params)
- {
- cnn.Open();
- DbCommand cmd = CreateCommand(CommandType.StoredProcedure, ProcName, Params);
- DbDataAdapter adapter = provider.CreateDataAdapter();
- adapter.SelectCommand = cmd;
- DataSet ds = new DataSet();
- adapter.Fill(ds);
- cnn.Close();
- return ds;
- }
- #endregion
- }
- <appSettings/>
- <connectionStrings>
- <!--添加引用System.Data.OracleClient-->
- <add name="ORACLE" connectionString="Data Source=TestSer;User ID=user1; Password=pwd1; Omit Oracle Connection Name=True; enlist=false" providerName="System.Data.OracleClient"/>
- <add name="MSSQL" connectionString="Data Source=TestSer;Initial Catalog=forum;Integrated Security=True" providerName="System.Data.SqlClient"/>
- <add name="ACCESS" connectionString="Provider=Microsoft.Jet.Oledb.4.0;Data Source=|DataDirectory|db1.mdb" providerName="System.Data.OleDb"/>
- <add name="MYSQL" connectionString="Data Source=192.168.0.2;Initial Catalog=test;Persist Security Info=True;User ID=user1;Password=pass1" providerName="MySql.Data.MySqlClient"/>
- </connectionStrings>
- <system.data>
- <DbProviderFactories>
- <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=5.2.1.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
- </DbProviderFactories>
- </system.data>
0 0
- 整理了一个多数据库通用操作类
- 整理了一个多数据库通用操作类
- 多数据库操作
- 一个数据库操作通用类库
- drupal7 多数据库操作
- EJB操作多数据库
- ThinkPHP多数据库操作
- yii2 多数据库操作
- laravel 多数据库操作
- Yii: 多数据库配置和操作
- QT SQLite 多数据库操作大全
- QT SQLite 多数据库操作大全
- SSH架构操作多数据库
- tp5中多数据库操作
- elasticsearch通用API,多数据源,分组
- WebKit之通用操作整理
- 一个操作数据库通用帮助类
- JAVA操作数据库的一个通用类
- NTP
- 模拟量I/O与数字量I/O有什么区别?
- 【quick-cocos2d-x】开发工具sublime text及其强力插件QuickXDev
- poj题目分类
- Longest Substring Without Repeating Characters
- 整理了一个多数据库通用操作类
- Sublime设置特殊缩进
- Git Push 避免用户名和密码方法
- SQL Server 2008 R2数据库镜像部署
- mvn报错:No goals have been specified for this build
- fedora20 安装搜狗输入法及各种问题的解决
- Flynn Architecture Note
- Java 并发编程之线程安全性
- play!的一个恶心异常