c#程序访问达梦数据库

1、准备数据库驱动

达梦数据库安装完成后路径一般为:C:\dmdbms

找到  C:\dmdbms\drivers\dotNet\DmProvider;

我选择为.net 4.0 框架类库

 2、程序引入DmProvider.dll

3、C#连接达梦数据库基础功公共类代码


using Dm;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;/********************************************************************** File Name:    数据访问基础类(基于达梦)** Author:       Luc** Create Time:  XXXX** Modifier:      ** Modify Time:   ** Description:  用于连接达梦数据库********************************************************************/
namespace XXXXX.Common
{public abstract class DbHelperOra{public static string connectionString = string.Empty;static DbHelperOra(){try{connectionString = ConfigurationManager.ConnectionStrings["dameng"].ToString();               }catch (Exception){throw new Exception(" 缺少数据库连接配置 ");}}         #region 公用方法public static bool Exists(string strSql){object obj = GetSingle(strSql);int cmdresult;if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))){cmdresult = 0;}else{cmdresult = int.Parse(obj.ToString());}if (cmdresult == 0){return false;}else{return true;}}public static bool Exists(string strSql, params DmParameter[] cmdParms){object obj = GetSingle(strSql, cmdParms);int cmdresult;if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))){cmdresult = 0;}else{cmdresult = int.Parse(obj.ToString());}if (cmdresult == 0){return false;}else{return true;}}#endregion#region  执行简单SQL语句/// <summary>/// 执行SQL语句,返回影响的记录数/// </summary>/// <param name="SQLString">SQL语句</param>/// <returns>影响的记录数</returns>public static int ExecuteSql(string SQLString){using (DmConnection connection = new DmConnection(connectionString)){using (DmCommand cmd = new DmCommand(SQLString, connection)){try{connection.Open();int rows = cmd.ExecuteNonQuery();return rows;}catch (DmException E){connection.Close();throw new Exception(E.Message);}}}}/// <summary>/// 执行多条SQL语句,实现数据库事务。/// </summary>/// <param name="SQLStringList">多条SQL语句</param>        public static void ExecuteSqlTran(ArrayList SQLStringList){using (DmConnection conn = new DmConnection(connectionString)){conn.Open();DmCommand cmd = new DmCommand();cmd.Connection = conn;DbTransaction tx = conn.BeginTransaction();cmd.Transaction = tx;try{for (int n = 0; n < SQLStringList.Count; n++){string strsql = SQLStringList[n].ToString();if (strsql.Trim().Length > 1){cmd.CommandText = strsql;cmd.ExecuteNonQuery();}}tx.Commit();}catch (DmException E){tx.Rollback();throw new Exception(E.Message);}}}/// <summary> /// 执行多条SQL语句,实现数据库事务。/// </summary>/// <param name="SQLStringList">多条SQL语句</param>/// <param name="param">参数值</param>public static void ExecuteSqlTranParam(ArrayList SQLStringList, params DmParameter[] param){using (DmConnection conn = new DmConnection(connectionString)){conn.Open();DmCommand cmd = new DmCommand();cmd.Connection = conn;DbTransaction tx = conn.BeginTransaction();cmd.Transaction = tx;try{PrepareCommandList(cmd, conn, tx, SQLStringList, param);for (int n = 0; n < SQLStringList.Count; n++){string strsql = SQLStringList[n].ToString();if (strsql.Trim().Length > 1){cmd.CommandText = strsql;cmd.ExecuteNonQuery();}}tx.Commit();}catch (DmException E){tx.Rollback();throw new Exception(E.Message);}}}/// <summary>/// 执行一条计算查询结果语句,返回查询结果(object)。/// </summary>/// <param name="SQLString">计算查询结果语句</param>/// <returns>查询结果(object)</returns>public static object GetSingle(string SQLString){using (DmConnection connection = new DmConnection(connectionString)){using (DmCommand cmd = new DmCommand(SQLString, connection)){try{connection.Open();object obj = cmd.ExecuteScalar();if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))){return null;}else{return obj;}}catch (DmException e){connection.Close();throw new Exception(e.Message);}}}}/// <summary>/// 执行查询语句,返回DbDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )/// </summary>/// <param name="strSQL">查询语句</param>/// <returns>DmDataReader</returns>public static DbDataReader ExecuteReader(string strSQL){DmConnection connection = new DmConnection(connectionString);DmCommand cmd = new DmCommand(strSQL, connection);try{connection.Open();DbDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);return myReader;}catch (DmException e){throw new Exception(e.Message);}}/// <summary>完成数据的查询,返回DataTable/// /// </summary>/// <param name="Dm">要执行的Dm</param>/// <param name="param">参数</param>/// <returns>DataTable</returns>public static DataTable GetTable(string sql, params DmParameter[] param){//实例化连接对象,并指定连接字符串,自动释放资源,不用关闭using (DmConnection conn = new DmConnection(connectionString)){DmDataAdapter adp = new DmDataAdapter(sql, conn);if (param != null){adp.SelectCommand.Parameters.AddRange(param);}DataTable dt = new DataTable();adp.Fill(dt);return dt;}}/// <summary>/// 执行查询语句,返回DataSet/// </summary>/// <param name="SQLString">查询语句</param>/// <returns>DataSet</returns>public static DataSet Query(string SQLString){using (DmConnection connection = new DmConnection(connectionString)){DataSet ds = new DataSet();try{connection.Open();DmDataAdapter command = new DmDataAdapter(SQLString, connection);command.Fill(ds, "ds");}catch (DmException ex){throw new Exception(ex.Message);}return ds;}}#endregion#region 执行带参数的SQL语句/// <summary>/// 执行SQL语句,返回影响的记录数/// </summary>/// <param name="SQLString">SQL语句</param>/// <returns>影响的记录数</returns>public static int ExecuteSql(string SQLString, params DmParameter[] cmdParms){using (DmConnection connection = new DmConnection(connectionString)){using (DmCommand cmd = new DmCommand()){try{PrepareCommand(cmd, connection, null, SQLString, cmdParms);int rows = cmd.ExecuteNonQuery();cmd.Parameters.Clear();return rows;}catch (DmException E){throw new Exception(E.Message);}}}}/// <summary>/// 执行多条SQL语句,实现数据库事务。/// </summary>/// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的DmParameter[])</param>public static void ExecuteSqlTran(Hashtable SQLStringList){using (DmConnection conn = new DmConnection(connectionString)){conn.Open();using (DbTransaction trans = conn.BeginTransaction()){DmCommand cmd = new DmCommand();try{//循环foreach (DictionaryEntry myDE in SQLStringList){string cmdText = myDE.Key.ToString();DmParameter[] cmdParms = (DmParameter[])myDE.Value;PrepareCommand(cmd, conn, trans, cmdText, cmdParms);int val = cmd.ExecuteNonQuery();cmd.Parameters.Clear();}trans.Commit();}catch{trans.Rollback();throw;}}}}/// <summary>/// 执行一条计算查询结果语句,返回查询结果(object)。/// </summary>/// <param name="SQLString">计算查询结果语句</param>/// <returns>查询结果(object)</returns>public static object GetSingle(string SQLString, params DmParameter[] cmdParms){using (DmConnection connection = new DmConnection(connectionString)){using (DmCommand cmd = new DmCommand()){try{PrepareCommand(cmd, connection, null, SQLString, cmdParms);object obj = cmd.ExecuteScalar();cmd.Parameters.Clear();if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))){return null;}else{return obj;}}catch (DmException e){throw new Exception(e.Message);}}}}/// <summary>/// 执行查询语句,返回DbDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )/// </summary>/// <param name="strSQL">查询语句</param>/// <returns>DmDataReader</returns>public static DbDataReader ExecuteReader(string SQLString, params DmParameter[] cmdParms){DmConnection connection = new DmConnection(connectionString);DmCommand cmd = new DmCommand();try{PrepareCommand(cmd, connection, null, SQLString, cmdParms);DbDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);cmd.Parameters.Clear();return myReader;}catch (DmException e){throw new Exception(e.Message);}}/// <summary>/// 执行查询语句,返回DataSet/// </summary>/// <param name="SQLString">查询语句</param>/// <returns>DataSet</returns>public static DataSet Query(string SQLString, params DmParameter[] cmdParms){using (DmConnection connection = new DmConnection(connectionString)){DmCommand cmd = new DmCommand();PrepareCommand(cmd, connection, null, SQLString, cmdParms);using (DmDataAdapter da = new DmDataAdapter(cmd)){DataSet ds = new DataSet();try{da.Fill(ds, "ds");cmd.Parameters.Clear();}catch (DmException ex){throw new Exception(ex.Message);}return ds;}}}/// <summary>/// 执行查询语句,返回DataTable/// </summary>/// <param name="cmdText">查询语句</param>/// <param name="commandParameters">参数集合</param>/// <returns>返回DataTable</returns>public static DataTable ExecuteDataTable(string cmdText, params DmParameter[] commandParameters){DataTable dt = new DataTable();DmCommand cmd = new DmCommand();using (DmConnection connection = new DmConnection(connectionString)){PrepareCommand(cmd, connection, null, cmdText, commandParameters);DmDataAdapter da = new DmDataAdapter(cmd);da.Fill(dt);cmd.Parameters.Clear();cmd.Dispose();return dt;}}/// <summary> 参数格式化批量删除/// /// </summary>/// <param name="cmd"></param>/// <param name="conn"></param>/// <param name="trans">事务</param>/// <param name="lst">多条sql语句</param>/// <param name="cmdParms">param</param>private static void PrepareCommandList(DmCommand cmd, DmConnection conn, DbTransaction trans, ArrayList lst, DmParameter[] cmdParms){if (conn.State != ConnectionState.Open)conn.Open();cmd.Connection = conn;cmd.CommandText = lst.ToString();if (trans != null)cmd.Transaction = trans;cmd.CommandType = CommandType.Text;//cmdType;if (cmdParms != null){foreach (DmParameter parm in cmdParms)cmd.Parameters.Add(parm);}}private static void PrepareCommand(DmCommand cmd, DmConnection conn, DbTransaction trans, string cmdText, DmParameter[] cmdParms){if (conn.State != ConnectionState.Open)conn.Open();cmd.Connection = conn;cmd.CommandText = cmdText;if (trans != null)cmd.Transaction = trans;cmd.CommandType = CommandType.Text;//cmdType;if (cmdParms != null){foreach (DmParameter parm in cmdParms){if (parm.Value == null || parm.Value.ToString() == ""){parm.Value = DBNull.Value;}cmd.Parameters.Add(parm);}}}#endregion#region 存储过程操作/// <summary>/// 执行存储过程 返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )/// </summary>/// <param name="storedProcName">存储过程名</param>/// <param name="parameters">存储过程参数</param>/// <returns>DmDataReader</returns>public static DbDataReader RunProcedure(string storedProcName, IDataParameter[] parameters){DmConnection connection = new DmConnection(connectionString);DbDataReader returnReader;connection.Open();DmCommand command = BuildQueryCommand(connection, storedProcName, parameters);command.CommandType = CommandType.StoredProcedure;returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);return returnReader;}/// <summary>/// 执行存储过程/// </summary>/// <param name="storedProcName">存储过程名</param>/// <param name="parameters">存储过程参数</param>/// <param name="tableName">DataSet结果中的表名</param>/// <returns>DataSet</returns>public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName){using (DmConnection connection = new DmConnection(connectionString)){DataSet dataSet = new DataSet();connection.Open();DmDataAdapter sqlDA = new DmDataAdapter();sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);sqlDA.Fill(dataSet, tableName);connection.Close();return dataSet;}}/// <summary>/// 构建 DmCommand 对象(用来返回一个结果集,而不是一个整数值)/// </summary>/// <param name="connection">数据库连接</param>/// <param name="storedProcName">存储过程名</param>/// <param name="parameters">存储过程参数</param>/// <returns>DmCommand</returns>private static DmCommand BuildQueryCommand(DmConnection connection, string storedProcName, IDataParameter[] parameters){DmCommand command = new DmCommand(storedProcName, connection);command.CommandType = CommandType.StoredProcedure;foreach (DmParameter parameter in parameters){command.Parameters.Add(parameter);}return command;}/// <summary>/// 执行存储过程,返回影响的行数       /// </summary>/// <param name="storedProcName">存储过程名</param>/// <param name="parameters">存储过程参数</param>/// <param name="rowsAffected">影响的行数</param>/// <returns></returns>public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected){using (DmConnection connection = new DmConnection(connectionString)){int result;connection.Open();DmCommand command = BuildIntCommand(connection, storedProcName, parameters);rowsAffected = command.ExecuteNonQuery();result = (int)command.Parameters["ReturnValue"].Value;//Connection.Close();return result;}}/// <summary>/// 创建 DmCommand 对象实例(用来返回一个整数值)   /// </summary>/// <param name="storedProcName">存储过程名</param>/// <param name="parameters">存储过程参数</param>/// <returns>DmCommand 对象实例</returns>private static DmCommand BuildIntCommand(DmConnection connection, string storedProcName, IDataParameter[] parameters){DmCommand command = BuildQueryCommand(connection, storedProcName, parameters);command.Parameters.Add(new DmParameter("ReturnValue",DmDbType.Int32, 4, ParameterDirection.ReturnValue,false, 0, 0, string.Empty, DataRowVersion.Default, null));return command;}#endregion}
}

C#连接达梦数据库基础功公共类相关推荐

  1. 达梦数据库基础2-数据库实例(Linux)

    目录 创建实例 查看进程 管理工具 ​编辑 启动和停止 图形界面工具 命令工具 前面完成数据库完成后,接下来我们需要创建数据库实例.我们继续使用图形工具来操作,和上一文章类似. xhost + ech ...

  2. java获取达梦数据库_Java连接达梦数据库驱动dm_jdbc

    [实例简介] Java连接达梦数据库驱动dm_jdbc: dm_jdbc\com.dameng.floader.jar dm_jdbc\com.dameng.impexp.jar dm_jdbc\Dm ...

  3. PHP连接达梦数据库

    PHP连接达梦数据库 背景 PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口. PHP 数据对象(PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口.实现 PDO ...

  4. JeecgBoot 连接达梦数据库

    JeecgBoot连接达梦数据库 一.达梦数据库官网下载地址 http://www.dameng.com/down.aspx?TypeId=11&FId=t14:11:14 项目采用DMB8开 ...

  5. idea如何连接达梦数据库

    idea如何连接达梦数据库 1.首先我们自己创建一个达梦数据库驱动 2.将达梦数据库jar包地址配置一下 3.然后输入相关信息进行连接 4.测试连接 5.ok

  6. QT Create OCI方式连接达梦数据库

    QT OCI方式连接达梦数据库 一.背景 用户使用QT Create开发集成软件 OCI的方式连接数据库. 需要说明的是,本人非开发人员,所以在C++代码编写思路或者使用方式上难免有些低级操作,调试中 ...

  7. Delphi测试ODBC连接达梦数据库

    首先要确定安装的Delphi版本到底是32位的还是64位的,根据Delphi的版本来安装对应位数的达梦或注册ODBC驱动. 版本问题一定要注意,否则后面会有很多报错,比如配置无效.无法加载dodbc. ...

  8. springboot连接达梦数据库

    springboot连接达梦数据库 这次实战主要说springboot项目连接达梦数据库. 先准备好达梦数据库的驱动包,如下: 在执行maven命令把该驱动包安装到自己的maven仓库,命令如下: m ...

  9. Linux 平台配置ODBC连接达梦数据库

    ODBC连接DM数据库 1.手工编译安装 2.配置驱动信息 odbcinst.ini 和数据源信息 odbc.ini 3.测试数据源连接 Linux 平台配置ODBC连接达梦数据库 1.手工编译安装 ...

最新文章

  1. IOS初级:UIAlertController
  2. java判断时间为上午,中午,下午,晚上,凌晨
  3. s:selected的用法
  4. python gui测试框架_八款常用的 Python GUI 开发框架推荐
  5. boost::weak_ptr和enable_shared_from_this
  6. ffmpeg编码越来越小_从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题(5)
  7. vc++6.0工具栏自绘按钮程序
  8. How to use Emerge
  9. java里赋值语句_java输入赋值语句
  10. opencv图像处理学习(五十七)——峰值信噪比和结构相似性
  11. Spring Transaction : TransactionInterceptor
  12. 多图片拼图怎么操作?这个方法不要错过
  13. Idea中发布JAR包到中央仓库报错问题处理 unable to find valid certification path to requested target
  14. 会议OA项目之我的会议(会议排座送审)
  15. 2020年下半年系统架构设计师论文真题
  16. 【数分】7. AB实验篇
  17. Mysql删除数据什么情况下会释放空间
  18. Urp下自定义特效管线和后处理特效实现
  19. 看完《爱情公寓5》结局后的这几天
  20. Anroidstudio安装

热门文章

  1. 《C语言程序设计》课程总结报告
  2. 2021年——1024程序员节
  3. 完美世界如何修改服务器ip,完美世界:完美整容及修改身材流程
  4. JAVA编写Word
  5. 微信小程序幽默风和git
  6. 51单片机内部外设:实时时钟(SPI)
  7. 双臂电桥测低电阻大物实验数据处理(C++实现)
  8. oracle rac 仲裁盘_11G ORACLE OCR和仲裁盘恢复
  9. Float的取值范围
  10. vue生成助记码全部教程