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;
}
}
}