|
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Linq;
- using System.Text;
- using CnasSynchronousCommon;
- using Kdbndp; // 人大金仓数据库驱动
-
- namespace CnasSynchronusDAL
- {
- public static class KingbaseHelper
- {
- private static String mConnStr = null;
-
- public static void InitConnectionString(string strServerIP, string strServerPort, string strServerHost, string strServerUser, string strServerPwd)
- {
- // 使用KdbndpConnectionStringBuilder构建连接字符串
- var builder = new KdbndpConnectionStringBuilder
- {
- Host = strServerIP,
- Port = Convert.ToInt32(strServerPort),
- Database = strServerHost,
- Username = strServerUser,
- Password = strServerPwd
- };
- mConnStr = builder.ToString();
- }
-
- public static void InitConnectionString(string strConnectiong)
- {
- mConnStr = strConnectiong;
- }
-
- /// <summary>
- /// 对Kingbase数据库执行增删改操作,返回受影响的行数。
- /// </summary>
- /// <param name="sql">要执行的增删改的SQL语句</param>
- /// <returns></returns>
- public static int ExecuteNonQuery(String sql)
- {
- using (var connection = new KdbndpConnection(mConnStr))
- {
- try
- {
- connection.Open();
- using (var transaction = connection.BeginTransaction())
- {
- try
- {
- using (var cmd = new KdbndpCommand(sql, connection, transaction))
- {
- int rows = cmd.ExecuteNonQuery();
- transaction.Commit();
- return rows;
- }
- }
- catch (Exception e1)
- {
- transaction.Rollback();
- AppLog.Error(e1.Message);
- throw;
- }
- }
- }
- catch (Exception e)
- {
- AppLog.Error(e.Message);
- throw;
- }
- }
- }
-
- /// <summary>
- /// 对数据库执行增删改操作,返回受影响的行数。
- /// </summary>
- /// <param name="sql">要执行的增删改的SQL语句</param>
- /// <returns></returns>
- public static int ExecuteNonQuery(String sql, KdbndpParameter[] cmdParams)
- {
- using (var connection = new KdbndpConnection(mConnStr))
- {
- try
- {
- connection.Open();
- using (var transaction = connection.BeginTransaction())
- {
- try
- {
- using (var cmd = new KdbndpCommand(sql, connection, transaction))
- {
- if (cmdParams != null)
- {
- cmd.Parameters.AddRange(cmdParams);
- }
- int rows = cmd.ExecuteNonQuery();
- transaction.Commit();
- return rows;
- }
- }
- catch (Exception e1)
- {
- transaction.Rollback();
- AppLog.Error(e1.Message);
- throw;
- }
- }
- }
- catch (Exception e)
- {
- AppLog.Error(e.Message);
- throw;
- }
- }
- }
-
- /// <summary>
- /// 对Kingbase数据库执行操作,返回 返回第一行第一列数据
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public static int ExecuteScalar(String sql)
- {
- try
- {
- using (KdbndpConnection connection = new KdbndpConnection(mConnStr))
- {
- connection.Open();
- KdbndpTransaction transaction = connection.BeginTransaction();
-
- using (KdbndpCommand cmd = new KdbndpCommand())
- {
- 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 (KdbndpException 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;
- }
- }
-
- /// <summary>
- /// 对Kingbase数据库执行操作,返回 返回第一行第一列数据
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public static int ExecuteScalar(String sql, KdbndpParameter[] cmdParams)
- {
- try
- {
- using (KdbndpConnection connection = new KdbndpConnection(mConnStr))
- {
- connection.Open();
- KdbndpTransaction transaction = connection.BeginTransaction();
-
- using (KdbndpCommand cmd = new KdbndpCommand())
- {
- try
- {
- int line = 0;
-
- PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, cmdParams);
-
- String str = cmd.ExecuteScalar().ToString();
- transaction.Commit();
-
- line = Convert.ToInt32(str);
- cmd.Parameters.Clear();
-
- return line;
- }
- catch (KdbndpException 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;
- }
- }
-
- /// <summary>
- /// 用执行的数据库连接执行一个返回数据集的sql命令
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public static KdbndpDataReader ExecuteReader(String sql)
- {
- try
- {
- //创建一个KdbndpConnection对象
- using (KdbndpConnection connection = new KdbndpConnection(mConnStr))
- {
- connection.Open();
- KdbndpTransaction transaction = connection.BeginTransaction();
-
- //创建一个KdbndpCommand对象
- using (KdbndpCommand cmd = new KdbndpCommand())
- {
- try
- {
- PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null);
-
- KdbndpDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
- transaction.Commit();
-
- cmd.Parameters.Clear();
- return reader;
- }
- catch (KdbndpException 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;
- }
- }
-
- /// <summary>
- /// 查询返回Dtaset
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public static DataSet ExecuteDataSet(String sql)
- {
- using (var connection = new KdbndpConnection(mConnStr))
- {
- try
- {
- connection.Open();
- using (var transaction = connection.BeginTransaction())
- {
- try
- {
- using (var cmd = new KdbndpCommand(sql, connection, transaction))
- {
- var adapter = new KdbndpDataAdapter(cmd);
- var ds = new DataSet();
- adapter.Fill(ds);
- transaction.Commit();
- return ds;
- }
- }
- catch (Exception e1)
- {
- transaction.Rollback();
- AppLog.Error(e1.Message);
- throw;
- }
- }
- }
- catch (Exception e)
- {
- AppLog.Error(e.Message);
- throw;
- }
- }
- }
-
- /// <summary>
- /// 执行sql 返回一个DataTable
- /// </summary>
- /// <param name="sqlText"></param>
- /// <param name="parameters"></param>
- /// <returns></returns>
- public static DataTable ExecuteDataTable(string sqlText, params KdbndpParameter[] parameters)
- {
- using (var connection = new KdbndpConnection(mConnStr))
- {
- try
- {
- using (var adapter = new KdbndpDataAdapter(sqlText, connection))
- {
- if (parameters != null)
- {
- adapter.SelectCommand.Parameters.AddRange(parameters);
- }
- var dt = new DataTable();
- adapter.Fill(dt);
- return dt;
- }
- }
- catch (Exception ex)
- {
- AppLog.Error(ex.Message);
- return null;
- }
- }
- }
-
- /// <summary>
- /// 查询返回Dtaset
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public static DataSet ExecuteDataSet(String sql, KdbndpParameter[] cmdParams)
- {
- KdbndpConnection connection = new KdbndpConnection(mConnStr);
- try
- {
- //创建一个KdbndpConnection对象
- using (connection)
- {
- connection.Open();
- KdbndpTransaction transaction = connection.BeginTransaction();
-
- //创建一个KdbndpCommand对象
- using (KdbndpCommand cmd = new KdbndpCommand())
- {
- try
- {
- PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, cmdParams);
-
- KdbndpDataAdapter adapter = new KdbndpDataAdapter();
- adapter.SelectCommand = cmd;
- DataSet ds = new DataSet();
-
- adapter.Fill(ds);
-
- transaction.Commit();
-
- //清除参数
- cmd.Parameters.Clear();
- return ds;
-
- }
- catch (KdbndpException 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;
- }
- }
-
- /// <summary>
- /// 准备执行一个命令
- /// </summary>
- /// <param name="cmd">sql命令</param>
- /// <param name="conn">OleDb连接</param>
- /// <param name="trans">OleDb事务</param>
- /// <param name="cmdType">命令类型例如 存储过程或者文本</param>
- /// <param name="cmdText">命令文本,例如:Select * from Products</param>
- /// <param name="cmdParms">执行命令的参数</param>
- private static void PrepareCommand(KdbndpCommand cmd, KdbndpConnection conn, KdbndpTransaction trans, CommandType cmdType, string cmdText, KdbndpParameter[] 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 (KdbndpParameter parm in cmdParms)
- cmd.Parameters.Add(parm);
- }
- }
-
- public static bool TestConnectKingbase()
- {
- try
- {
-
-
- // 完整参数示例
- //string connStr = "Host=localhost;Port=54321;Database=test;Username=system;Password=1;Pooling=true;MinPoolSize=1;MaxPoolSize=20;CommandTimeout=120;";
- string connStr = "Host=localhost;Port=54321;Database=testdb;Username=SYSTEM;Password=1;";
- //using (var connection = new KdbndpConnection(mConnStr))
- using (var connection = new KdbndpConnection())
- {
- connection.ConnectionString = connStr;
- connection.Open();
- return connection.State == ConnectionState.Open;
- }
- }
- catch (Exception ex)
- {
- AppLog.Error(ex.Message);
- return false;
- }
- }
- }
- }
|