| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Data;
- using System.Data.Odbc;
- using System.Data.OracleClient;
- using XmlDucumentAnalysis;
- namespace DataPumpWindowsService
- {
- public class OdbcHelper
- {
- private string _message = "";//返回信息
- public OdbcConnection _con_SQL;//连接对象
- public string Message { get { return _message; } }
- public OdbcHelper(string connecteString)
- {
- _con_SQL = new OdbcConnection(connecteString);
- }
- #region 命令、事务、连接
- /// <summary>
- /// 创建命令对象
- /// </summary>
- /// <returns></returns>
- private OdbcCommand CreateCommand()
- {
- OdbcCommand cmdObj = _con_SQL.CreateCommand();
- cmdObj.CommandTimeout = int.MaxValue;
- return cmdObj;
- }
- /// <summary>
- /// 打开连接
- /// </summary>
- /// <returns></returns>
- public bool OpenConnection()
- {
- //检测连接是否已打开
- if (_con_SQL.State == System.Data.ConnectionState.Open)
- return true;
- try
- {
- _con_SQL.Open();
- }
- catch (Exception ex)
- {
- _message = ex.Message;
- Log.Debug(ex);
- return false;
- }
- //检测连接状态
- if (_con_SQL.State != System.Data.ConnectionState.Open)
- {
- _message = "打开连接失败";
- return false;
- }
- return true;
- }
- /// <summary>
- /// 关闭连接
- /// </summary>
- /// <returns></returns>
- public bool CloseConnection()
- {
- if (_con_SQL.State == System.Data.ConnectionState.Closed)
- return true;
- try
- {
- _con_SQL.Close();
- }
- catch (Exception ex)
- {
- _message = ex.Message;
- Log.Debug(ex);
- return false;
- }
- if (_con_SQL.State != System.Data.ConnectionState.Closed)
- {
- _message = "关闭连接失败";
- return false;
- }
- return true;
- }
- #endregion
- #region 执行无返回值的sql语句
- /// <summary>
- /// 执行无返回值的sql语句
- /// </summary>
- /// <param name="commandString"></param>
- /// <returns></returns>
- public bool ExecuteNonQuery(string commandString)
- {
- //打开连接失败,不执行查询
- if (!OpenConnection())
- return false;
- try
- {
- OdbcCommand cmdObj = CreateCommand();
- cmdObj.CommandText = commandString;
- cmdObj.ExecuteNonQuery();
- }
- catch (Exception ex)
- {
- CloseConnection();
- _message = ex.Message;
- Log.Debug(ex);
- Log.Debug("ex:" + commandString);
- return false;
- }
- CloseConnection();
- return true;
- }
- #endregion
- #region 执行返回值的sql
- /// <summary>
- /// 执行返回值的sql
- /// </summary>
- /// <param name="commandString"></param>
- /// <returns></returns>
- public object ExecuteResult(string commandString)
- {
- object reobj = null;
- //打开连接失败,不执行查询
- if (!OpenConnection()) return reobj;
- try
- {
- OdbcCommand cmdObj = CreateCommand();
- cmdObj.CommandText = commandString;
- reobj = cmdObj.ExecuteScalar();
- }
- catch (Exception ex)
- {
- _message = ex.Message;
- Log.Debug(ex);
- }
- finally
- {
- CloseConnection();
- }
- return reobj;
- }
- #endregion
- #region 执行sql命令组
- /// <summary>
- /// 执行sql命令组
- /// </summary>
- /// <param name="arrSql"></param>
- /// <returns></returns>
- public bool ExecuteSqls(ArrayList arrSql)
- {
- if (!OpenConnection()) return false;
- try
- {
- OdbcCommand cmdObj = CreateCommand();
- foreach (var sql in arrSql)
- {
- cmdObj.CommandText = sql.ToString();
- cmdObj.ExecuteNonQuery();
- }
- }
- catch (Exception ex)
- {
- _message = ex.Message;
- Log.Debug(ex);
- return false;
- }
- finally
- {
- CloseConnection();
- }
- return true;
- }
- #endregion
- #region 事务控制执行sql命令组
- /// <summary>
- /// 事务控制执行sql命令组
- /// </summary>
- /// <param name="arrSql"></param>
- /// <returns></returns>
- public bool ExecuteSqlByAffair(ArrayList arrSql)
- {
- if (!OpenConnection()) return false;
- OdbcTransaction transObj = _con_SQL.BeginTransaction();//开始事务操作
- try
- {
- OdbcCommand cmdObj = CreateCommand();
- cmdObj.Transaction = transObj;//指定command的事务对象
- foreach (var sql in arrSql)
- {
- cmdObj.CommandText = sql.ToString();
- cmdObj.ExecuteNonQuery();
- }
- transObj.Commit();
- }
- catch (Exception ex)
- {
- transObj.Rollback();
- _message = ex.Message;
- Log.Debug(ex);
- foreach (var sql in arrSql)
- {
- Log.Debug("ex:" + sql);
- }
- return false;
- }
- finally
- {
- CloseConnection();
- }
- return true;
- }
- /// <summary>
- /// 事务控制执行sql命令组
- /// </summary>
- /// <param name="dicSql"></param>
- /// <returns></returns>
- public bool ExecuteSqlsByAffair(Dictionary<string, string> dicSql)
- {
- if (!OpenConnection())
- return false;
- OdbcTransaction transObj = _con_SQL.BeginTransaction();
- string sqlPath = string.Empty;
- try
- {
- OdbcCommand cmdObj = CreateCommand();
- cmdObj.Transaction = transObj;
- foreach (var item in dicSql)
- {
- sqlPath = item.Key;
- string[] commands = System.Text.RegularExpressions.Regex.Split(item.Value + " ",
- "[ |\r\n]go[ |\r\n]", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
- foreach (string sql in commands)
- if (sql.Trim().Length > 0)
- {
- cmdObj.CommandText = sql;
- cmdObj.ExecuteNonQuery();
- }
- }
- transObj.Commit();
- }
- catch (Exception ex)
- {
- transObj.Rollback();
- _message = string.Format("执行 {0} 出错;\r\n", sqlPath);
- _message += ex.Message;
- Log.Debug(_message);
- return false;
- }
- finally
- {
- CloseConnection();
- }
- return true;
- }
- /// <summary>
- /// 事务控制执行sql命令组
- /// </summary>
- /// <param name="dicSql">sql命令组</param>
- /// <param name="dicRecord">返回的日志</param>
- /// <returns></returns>
- public bool ExecuteSqlsByAffair(Dictionary<string, string> dicSql, ref Dictionary<string, string> dicRecord)
- {
- if (!OpenConnection()) return false;
- OdbcTransaction transObj = _con_SQL.BeginTransaction();
- string sqlPath = string.Empty;
- try
- {
- OdbcCommand cmdObj = CreateCommand();
- cmdObj.Transaction = transObj;
- foreach (var item in dicSql)
- {
- sqlPath = item.Key;
- string[] commands = System.Text.RegularExpressions.Regex.Split(item.Value + " ",
- "[ |\r\n]go[ |\r\n]", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
- foreach (string sql in commands)
- if (sql.Trim().Length > 0)
- {
- cmdObj.CommandText = sql;
- cmdObj.ExecuteNonQuery();
- }
- if (dicRecord != null)
- dicRecord.Add(sqlPath, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss", System.Globalization.DateTimeFormatInfo.InvariantInfo));
- }
- transObj.Commit();
- }
- catch (Exception ex)
- {
- _message = string.Format("执行{0}出错:\r\n", sqlPath);
- _message += ex.Message;
- Log.Debug(_message);
- try { transObj.Rollback(); }
- catch { }
- return false;
- }
- return true;
- }
- #endregion
- #region 获取数据表
- /// <summary>
- /// 获取数据表
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public DataTable GetDataTable(string sql)
- {
- Log.Debug(sql);
- if (!OpenConnection()) return null;
- try
- {
- DataTable dt = new DataTable();
- OdbcCommand cmdObj = CreateCommand();
- cmdObj.CommandText = sql;
- OdbcDataAdapter daObj = new OdbcDataAdapter(cmdObj);
- daObj.Fill(dt);
- return dt;
- }
- catch (Exception ex)
- {
- _message = ex.Message;
- Log.Debug(ex);
- Log.Debug("ex:" + sql);
- return null;
- }
- finally
- {
- CloseConnection();
- }
- }
- /// <summary>
- /// 获取数据表
- /// </summary>
- /// <param name="sql"></param>
- /// <param name="tableName"></param>
- /// <returns></returns>
- public DataTable GetDataTable(string sql, string tableName)
- {
- if (!OpenConnection()) return null;
- try
- {
- DataTable dt = new DataTable();
- OdbcCommand cmdObj = CreateCommand();
- cmdObj.CommandText = sql;
- OdbcDataAdapter daObj = new OdbcDataAdapter(cmdObj);
- daObj.Fill(dt);
- dt.TableName = tableName;
- return dt;
- }
- catch (Exception ex)
- {
- _message = ex.Message;
- Log.Debug(ex);
- return null;
- }
- finally
- {
- CloseConnection();
- }
- }
- public DataTable GetDataTable(string sql, string tableName, int currentPage, int pageSize)
- {
- if (!OpenConnection()) return null;
- try
- {
- DataSet ds = new DataSet();
- OdbcCommand cmdObj = CreateCommand();
- cmdObj.CommandText = sql;
- OdbcDataAdapter daObj = new OdbcDataAdapter(cmdObj);
- daObj.Fill(ds, (currentPage - 1) * pageSize, pageSize, tableName);
- return ds.Tables[0];
- }
- catch (Exception ex)
- {
- _message = ex.Message;
- Log.Debug(ex);
- return null;
- }
- finally
- {
- CloseConnection();
- }
- }
- #endregion
- #region 获取数据集
- /// <summary>
- /// 获取数据集
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public DataSet GetDataSet(string sql)
- {
- if (!OpenConnection()) return null;
- try
- {
- DataSet ds = new DataSet();
- OdbcCommand cmdObj = CreateCommand();
- cmdObj.CommandText = sql;
- OdbcDataAdapter daObj = new OdbcDataAdapter(cmdObj);
- daObj.Fill(ds);
- return ds;
- }
- catch (Exception ex)
- {
- _message = ex.Message;
- Log.Debug(ex);
- return null;
- }
- finally
- {
- CloseConnection();
- }
- }
- #endregion
- }
- }
|