/****************************** * 说明:数据库操作类 * 创建人:龚宇超 * 创建日期:2017-07-24 * 修改人: * 修改日期: * 修改备注: * 版本:1.0.0.0 ******************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; using System.Data.Odbc; namespace Lskj.Core { /// /// 数据库操作类 /// public static class OdbcHelper { /// /// 数据连接 /// public static OdbcConnection _connection;//SqlConnection /// /// 请求超时时间 /// public static int CommandTimeout; //#region ExecuteAdapter ///// ///// 说明:获取适配器 ///// 创建人:龚宇超 ///// 创建日期:2017-07-24 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// Type of the command. ///// The command text. ///// The command parameters. ///// SqlDataAdapter. //public static OdbcDataAdapter ExecuteAdapter(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) //{ // OdbcDataAdapter adapter; // OdbcCommand cmd = new OdbcCommand(); // try // { // PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters); // adapter = new OdbcDataAdapter(cmd); // } // catch // { // throw; // } // return adapter; //} ///// ///// 说明:获取适配器 ///// 创建人:龚宇超 ///// 创建日期:2017-07-24 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// Type of the command. ///// The command text. ///// SqlDataAdapter. //public static OdbcDataAdapter ExecuteAdapter(CommandType cmdType, string cmdText) //{ // OdbcDataAdapter adapter; // OdbcCommand cmd = new OdbcCommand(); // try // { // PrepareCommand(cmd, _connection, null, cmdType, cmdText, null); // adapter = new OdbcDataAdapter(cmd); // } // catch // { // throw; // } // return adapter; //} //#endregion //#region ExecuteDataTable ///// ///// 说明:执行sql返回DataTable ///// 创建人:龚宇超 ///// 创建日期:2017-07-24 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// The command text. ///// DataTable. public static DataTable ExecuteDataTable(string cmdText) { return ExecuteDataSet(cmdText).Tables[0]; } ///// ///// 说明:执行sql返回DataTable ///// 创建人:龚宇超 ///// 创建日期:2017-07-24 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// The command text. ///// DataTable. //public static DataTable ExecuteDataTable(string cmdText, params SqlParameter[] commandParameters) //{ // return ExecuteDataSet(CommandType.Text, cmdText, "temp", commandParameters).Tables[0]; //} ///// ///// 说明:执行sql返回指定字段值 ///// 创建人:龚宇超 ///// 创建日期:2017-08-15 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// Name of the field. ///// The command text. ///// System.Object. //public static object ExecuteObject(string fieldName, string cmdText) //{ // object result = null; // try // { // result = ExecuteDataSet(cmdText).Tables[0].Rows[0][fieldName]; // } // catch (Exception) // { // } // return result; //} ///// ///// 说明:执行sql返回指定字段值 ///// 创建人:龚宇超 ///// 创建日期:2017-11-27 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// Name of the field. ///// The command text. ///// The command parameters. ///// System.Object. //public static object ExecuteObject(string fieldName, string cmdText, params SqlParameter[] commandParameters) //{ // object result = null; // try // { // result = ExecuteDataSet(CommandType.Text, cmdText, "temp", commandParameters).Tables[0].Rows[0][fieldName]; // } // catch (Exception) // { // } // return result; //} ///// ///// 说明:执行sql返回指定字段值 ///// 创建人:龚宇超 ///// 创建日期:2017-08-15 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// Name of the field. ///// The command text. ///// System.Object. //public static string ExecuteString(string fieldName, string cmdText) //{ // object obj = ExecuteObject(fieldName, cmdText); // return obj == null ? "" : obj.ToString(); //} ///// ///// 说明:执行sql返回指定字段值 ///// 创建人:龚宇超 ///// 创建日期:2017-11-27 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// Name of the field. ///// The command text. ///// The command parameters. ///// System.String. //public static string ExecuteString(string fieldName, string cmdText, params SqlParameter[] commandParameters) //{ // object obj = ExecuteObject(fieldName, cmdText, commandParameters); // return obj == null ? "" : obj.ToString(); //} //#endregion //#region ExecuteDataSet ///// ///// 说明:查询结果集 ///// 创建人:龚宇超 ///// 创建日期:2017-07-24 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// Type of the command. ///// The command text. ///// Name of the tab. ///// The command parameters. ///// DataSet. //public static DataSet ExecuteDataSet(int cmdType, string cmdText, string tabName, params SqlParameter[] commandParameters) //{ // CommandType _cmdType = CommandType.Text; // switch (cmdType) // { // case 4: // _cmdType = CommandType.StoredProcedure; // break; // case 512: // _cmdType = CommandType.TableDirect; // break; // } // return ExecuteDataSet(_cmdType, cmdText, tabName, commandParameters); //} ///// ///// 说明:查询结果集 ///// 创建人:龚宇超 ///// 创建日期:2017-07-24 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// 语句类型存储过程或者sql语句 ///// 执行内容 ///// 表名 ///// 参数 ///// DataSet. public static DataSet ExecuteDataSet(CommandType cmdType, string cmdText, string tabName, params SqlParameter[] commandParameters) { DataSet set2; OdbcCommand cmd = new OdbcCommand(); try { PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters); OdbcDataAdapter adapter = new OdbcDataAdapter(cmd); DataSet dataSet = new DataSet(); adapter.Fill(dataSet, tabName); //adapter.FillSchema(dataSet, SchemaType.Mapped, tabName); set2 = dataSet; } catch (Exception e) { if (e.Message.StartsWith("在从服务器接收结果时发生传输级错误") || e.Message.StartsWith("在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误") || e.Message.StartsWith("在向服务器发送请求时发生传输级错误")) { throw new Exception("无法连接服务器,请检查网络连接."); } else { throw; } } finally { cmd.Dispose(); } return set2; } ///// ///// 说明:查询结果集 ///// 创建人:龚宇超 ///// 创建日期:2017-07-24 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// 语句类型存储过程或者sql语句 ///// 执行内容 ///// 表名 ///// DataSet. public static DataSet ExecuteDataSet(CommandType cmdType, string cmdText, string tabName) { return ExecuteDataSet(cmdType, cmdText, tabName, null); } ///// ///// 说明:查询结果集 ///// 创建人:龚宇超 ///// 创建日期:2017-07-24 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// 执行内容 ///// DataSet. public static DataSet ExecuteDataSet(string cmdText) { return ExecuteDataSet(CommandType.Text, cmdText, "temp"); } ///// ///// 说明:查询结果集 ///// 创建人:龚宇超 ///// 创建日期:2017-07-24 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// Name of the procedure. ///// 表名 ///// The parameter names. ///// The parameter values. ///// DataSet. //public static DataSet ExecuteDataSet(string procedureName, string tabName, string[] parameterNames, object[] parameterValues) //{ // DataSet set2; // try // { // OdbcCommand cmd = new OdbcCommand(procedureName, _connection); // cmd.CommandType = CommandType.StoredProcedure; // if (parameterNames != null && parameterValues != null) // { // for (int i = 0; i < parameterNames.Length && i < parameterValues.Length; i++) // { // cmd.Parameters.AddWithValue(parameterNames[i], parameterValues[i]); // } // } // OdbcDataAdapter adapter = new OdbcDataAdapter(cmd); // DataSet dataSet = new DataSet(); // adapter.Fill(dataSet, tabName); // set2 = dataSet; // } // catch // { // throw; // } // return set2; //} //#endregion #region ExecuteNonQuery /// /// 说明:执行sql语句或者存储过程 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Type of the command. /// The command text. /// The command parameters. /// System.Int32. public static int ExecuteNonQuery(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { OdbcCommand cmd = new OdbcCommand(); int num = 0; try { PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters); num = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } catch (Exception e) { if (e.Message.StartsWith("在从服务器接收结果时发生传输级错误") || e.Message.StartsWith("在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误") || e.Message.StartsWith("在向服务器发送请求时发生传输级错误")) { throw new Exception("无法连接服务器,请检查网络连接."); } else { throw; } } finally { cmd.Dispose(); } return num; } /// /// 说明:执行sql语句或者存储过程 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// Type of the command. /// The command text. /// System.Int32. public static int ExecuteNonQuery(CommandType cmdType, string cmdText) { return ExecuteNonQuery(CommandType.Text, cmdText, null); } /// /// 说明:执行sql语句或者存储过程 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The command text. /// System.Int32. public static int ExecuteNonQuery(string cmdText) { return ExecuteNonQuery(CommandType.Text, cmdText); } #endregion //#region ExecuteReader ///// ///// 说明:执行sql语句或者存储过程并返回结果集(只读、只进) ///// 创建人:龚宇超 ///// 创建日期:2017-07-24 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// Type of the command. ///// The command text. ///// The command parameters. ///// SqlDataReader. //public static OdbcDataReader ExecuteReader(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) //{ // OdbcDataReader reader2; // OdbcCommand cmd = new OdbcCommand(); // try // { // PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters); // OdbcDataReader reader = cmd.ExecuteReader(); // cmd.Parameters.Clear(); // reader2 = reader; // } // catch // { // throw; // } // return reader2; //} //#endregion //#region ExecuteScalar ///// ///// 说明:执行sql语句或者存储过程并返回结果集第一行第一列 ///// 创建人:龚宇超 ///// 创建日期:2017-07-24 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// The connectionection. ///// Type of the command. ///// The command text. ///// The command parameters. ///// System.Object. //public static object ExecuteScalar(OdbcConnection Connectionection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) //{ // OdbcCommand cmd = new OdbcCommand(); // PrepareCommand(cmd, Connectionection, null, cmdType, cmdText, commandParameters); // object obj2 = cmd.ExecuteScalar(); // cmd.Parameters.Clear(); // return obj2; //} ///// ///// 说明:执行sql语句或者存储过程并返回结果集第一行第一列 ///// 创建人:龚宇超 ///// 创建日期:2017-07-24 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// Type of the command. ///// The command text. ///// The command parameters. ///// System.Object. //public static object ExecuteScalar(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) //{ // OdbcCommand cmd = new OdbcCommand(); // { // PrepareCommand(cmd, _connection, null, cmdType, cmdText, commandParameters); // object obj2 = cmd.ExecuteScalar(); // cmd.Parameters.Clear(); // return obj2; // } //} ///// ///// 说明:执行sql语句或者存储过程并返回结果集第一行第一列 ///// 创建人:龚宇超 ///// 创建日期:2017-07-24 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// Type of the command. ///// The command text. ///// System.Object. //public static object ExecuteScalar(CommandType cmdType, string cmdText) //{ // OdbcCommand cmd = new OdbcCommand(); // { // PrepareCommand(cmd, _connection, null, cmdType, cmdText, null); // object obj2 = cmd.ExecuteScalar(); // cmd.Parameters.Clear(); // return obj2; // } //} ///// ///// 说明:执行sql语句或者存储过程并返回结果集第一行第一列 ///// 创建人:龚宇超 ///// 创建日期:2017-08-21 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// The command text. ///// System.Object. //public static object ExecuteScalar(string cmdText) //{ // OdbcCommand cmd = new OdbcCommand(); // { // PrepareCommand(cmd, _connection, null, CommandType.Text, cmdText, null); // object obj2 = cmd.ExecuteScalar(); // cmd.Parameters.Clear(); // return obj2; // } //} //#endregion #region PrepareCommand /// /// 说明: sql参数处理 /// 创建人:龚宇超 /// 创建日期:2017-07-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The command. /// The connection. /// The trans. /// Type of the command. /// The command text. /// The command parms. private static void PrepareCommand(OdbcCommand cmd, OdbcConnection Connection, OdbcTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms) { if (Connection.State != ConnectionState.Open) { Connection.Open(); } cmd.Connection = Connection; cmd.CommandTimeout = CommandTimeout; cmd.CommandText = cmdText; if (trans != null) { cmd.Transaction = trans; } cmd.CommandType = cmdType; if (cmdParms != null) { foreach (SqlParameter parameter in cmdParms) { cmd.Parameters.Add(parameter); } } } #endregion } }