using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using CnasSynchronousCommon; using Dm; namespace CnasSynchronusDAL { public static class DamengHelper { private static String mConnStr = null; public static void InitConnectionString(string strServerIP, string strServerPort, string strServerHost, string strServerUser, string strServerPwd) { mConnStr = $"Server={strServerIP};Port={strServerPort};Database={strServerHost};User Id={strServerUser};Password={strServerPwd};"; } public static void InitConnectionString(string strConnectiong) { mConnStr = strConnectiong; } /// /// 对达梦数据库执行增删改操作,返回受影响的行数。 /// /// 要执行的增删改的SQL语句 /// public static int ExecuteNonQuery(String sql) { DmConnection connection = new DmConnection(mConnStr); try { using (connection) { connection.Open(); DmTransaction transaction = (DmTransaction)connection.BeginTransaction(); using (DmCommand cmd = new DmCommand()) { try { PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null); int rows = cmd.ExecuteNonQuery(); transaction.Commit(); cmd.Parameters.Clear(); return rows; } catch (DmException e1) { try { transaction.Rollback(); } catch (Exception e2) { AppLog.Error(e2.Message); throw; } AppLog.Error(e1.Message); throw; } } } } catch (Exception e) { AppLog.Error(e.Message); throw; } } /// /// 对数据库执行增删改操作,返回受影响的行数。 /// /// 要执行的增删改的SQL语句 /// public static int ExecuteNonQuery(String sql, DmParameter[] cmdParams) { try { using (DmConnection connection = new DmConnection(mConnStr)) { connection.Open(); DmTransaction transaction = (DmTransaction)connection.BeginTransaction(); using (DmCommand cmd = new DmCommand()) { try { PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, cmdParams); int rows = cmd.ExecuteNonQuery(); transaction.Commit(); cmd.Parameters.Clear(); return rows; } catch (DmException e1) { try { transaction.Rollback(); } catch (Exception e2) { AppLog.Error(e2.Message); throw; } AppLog.Error(e1.Message); throw; } } } } catch (Exception e) { AppLog.Error(e.Message); throw; } } /// /// 对达梦数据库执行操作,返回第一行第一列数据 /// /// /// public static int ExecuteScalar(String sql) { try { using (DmConnection connection = new DmConnection(mConnStr)) { connection.Open(); DmTransaction transaction = (DmTransaction)connection.BeginTransaction(); using (DmCommand cmd = new DmCommand()) { try { int line = 0; PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null); String str = cmd.ExecuteScalar().ToString(); transaction.Commit(); line = Convert.ToInt32(str); cmd.Parameters.Clear(); return line; } catch (DmException e1) { try { transaction.Rollback(); } catch (Exception e2) { AppLog.Error(e2.Message); throw; } AppLog.Error(e1.Message); throw; } } } } catch (Exception e) { AppLog.Error(e.Message); throw; } } /// /// 查询返回DataSet /// /// /// public static DataSet ExecuteDataSet(String sql) { DmConnection connection = new DmConnection(mConnStr); try { using (connection) { connection.Open(); DmTransaction transaction = (DmTransaction)connection.BeginTransaction(); using (DmCommand cmd = new DmCommand()) { try { PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null); DmDataAdapter adapter = new DmDataAdapter(); adapter.SelectCommand = cmd; DataSet ds = new DataSet(); adapter.Fill(ds); transaction.Commit(); cmd.Parameters.Clear(); return ds; } catch (DmException e1) { try { transaction.Rollback(); } catch (Exception e2) { AppLog.Error(e2.Message); throw; } AppLog.Error(e1.Message); throw; } } } } catch (Exception e) { AppLog.Error(e.Message); throw; } finally { if (connection != null) { connection.Close(); } } } /// /// 执行sql 返回一个DataTable /// /// /// /// public static DataTable ExecuteDataTable(string sqlText, params DmParameter[] parameters) { DataTable dt = null; try { using (DmDataAdapter adapter = new DmDataAdapter(sqlText, mConnStr)) { dt = new DataTable(); adapter.SelectCommand.Parameters.AddRange(parameters); adapter.Fill(dt); return dt; } } catch (Exception ex) { AppLog.Error(ex.Message); } return null; } /// /// 准备执行一个命令 /// /// sql命令 /// 数据库连接 /// 数据库事务 /// 命令类型例如 存储过程或者文本 /// 命令文本,例如:Select * from Products /// 执行命令的参数 private static void PrepareCommand(DmCommand cmd, DmConnection conn, DmTransaction trans, CommandType cmdType, 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 = cmdType; if (cmdParms != null) { foreach (DmParameter parm in cmdParms) cmd.Parameters.Add(parm); } } /// /// 测试数据库连接 /// /// public static bool TestConnectDameng() { bool bIfSuccess = false; try { using (DmConnection connection = new DmConnection(mConnStr)) { connection.Open(); if (connection.State == ConnectionState.Open) bIfSuccess = true; } } catch (Exception ex) { AppLog.Error(ex.Message); bIfSuccess = false; } return bIfSuccess; } } }