通过分装的方法:
public class SQLHelper { private static readonly string ConnectionString = ConfigurationManager.AppSettings["conn"].ToString(); //SqlParameter[] 方便传递数组 /// <summary> /// 主要用于封装Command对象的ExecuteNonQuery方法,用于数据的增删改 /// </summary> /// <param name="conn">Connection对象</param> /// <param name="cmdText">Command.CommandText</param> /// <param name="cmdType">Command.CommandType</param> /// <param name="cmdParams">Command.Parameters</param> /// <returns>返回受影响的行数</returns> public static int ExecuteNonQuery(string cmdText, CommandType cmdType, params SqlParameter[] cmdParams) { SqlConnection conn = new SqlConnection(ConnectionString); SqlCommand comm = new SqlCommand(); PrepareCommand(comm, conn, cmdText, cmdType, cmdParams); try { return comm.ExecuteNonQuery(); } catch (SqlException ex) { throw ex; } finally { conn.Close(); } } /// <summary> /// 封装Command对象的ExecuteReader 方法用于数据的查询 /// </summary> /// <param name="conn">Connection对象</param> /// <param name="cmdText">Command.CommandText</param> /// <param name="cmdType">Command.CommandType</param> /// <param name="cmdParams">Command.Parameters</param> /// <returns>返回SqlDataReader对象</returns> public static SqlDataReader ExcuteReader(string cmdText, CommandType cmdType, params SqlParameter[] cmdParams) { SqlConnection conn = new SqlConnection(ConnectionString); SqlCommand comm = new SqlCommand(); PrepareCommand(comm, conn, cmdText, cmdType, cmdParams); try { //自动关闭 return comm.ExecuteReader(CommandBehavior.CloseConnection); } catch (SqlException ex) { throw ex; } } /// <summary> /// 封装Commond对象的ExecuteScalar方法,用于返回首行首列数据 /// </summary> /// <param name="conn">Connection对象</param> /// <param name="cmdText">Command.CommandText</param> /// <param name="cmdType">Command.CommandType</param> /// <param name="cmdParams">Command.Parameters</param> /// <returns>返回的是object单一的值</returns> public static object ExecuteScalar(string cmdText, CommandType cmdType, params SqlParameter[] cmdParams) { SqlConnection conn = new SqlConnection(ConnectionString); SqlCommand comm = new SqlCommand(); PrepareCommand(comm, conn, cmdText, cmdType, cmdParams); try { return comm.ExecuteScalar(); } catch (SqlException ex) { throw ex; } finally { conn.Close(); } } /// <summary> /// 主要用于返回DataTable 查询的数据 /// </summary> /// <param name="conn">Connection对象</param> /// <param name="cmdText">Command.CommandText</param> /// <param name="cmdType">Command.CommandType</param> /// <param name="cmdParams">Command.Parameters</param> /// <returns>返回DataTable对象</returns> public static DataTable GetDataTable(string cmdText, CommandType cmdType, params SqlParameter[] cmdParams) { SqlConnection conn = new SqlConnection(); SqlCommand comm = new SqlCommand(); PrepareCommand(comm, conn, cmdText, cmdType, cmdParams); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = comm; DataSet ds = new DataSet(); try { //自动打开自动关闭 实现断开式的链接 da.Fill(ds); return ds.Tables[0]; } catch (SqlException ex) { throw ex; } finally { conn.Close(); } } /// <summary> /// 主要用于给Command对象进行初始化赋值工作 /// </summary> /// <param name="comm">是操作的Comman对象</param> /// <param name="conn">Connection对象</param> /// <param name="cmdText">Command.CommandText</param> /// <param name="cmdType">Command.CommandType</param> /// <param name="cmdParams">Command.Parameters</param> private static void PrepareCommand(SqlCommand comm, SqlConnection conn, string cmdText, CommandType cmdType, SqlParameter[] cmdParams) { if (conn.State == ConnectionState.Closed) conn.Open(); comm.Connection = conn; comm.CommandText = cmdText; comm.CommandType = cmdType; if (cmdParams != null) { for (int i = 0; i < cmdParams.Length; i++) { comm.Parameters.Add(cmdParams[i]); } } } }
Access数据库的帮助类:
public class AccessHelper { private static readonly string ConnectionString = ConfigurationManager.AppSettings["conn"].ToString(); //SqlParameter[] 方便传递数组 /// <summary> /// 主要用于封装Command对象的ExecuteNonQuery方法,用于数据的增删改 /// </summary> /// <param name="conn">Connection对象</param> /// <param name="cmdText">Command.CommandText</param> /// <param name="cmdType">Command.CommandType</param> /// <param name="cmdParams">Command.Parameters</param> /// <returns>返回受影响的行数</returns> public static int ExecuteNonQuery(string cmdText, CommandType cmdType, params OleDbParameter[] cmdParams) { OleDbConnection conn = new OleDbConnection(ConnectionString); OleDbCommand comm = new OleDbCommand(); PrepareCommand(comm, conn, cmdText, cmdType, cmdParams); try { return comm.ExecuteNonQuery(); } catch (OleDbException ex) { throw ex; } finally { conn.Close(); } } /// <summary> /// 封装Command对象的ExecuteReader 方法用于数据的查询 /// </summary> /// <param name="conn">Connection对象</param> /// <param name="cmdText">Command.CommandText</param> /// <param name="cmdType">Command.CommandType</param> /// <param name="cmdParams">Command.Parameters</param> /// <returns>返回SqlDataReader对象</returns> public static OleDbDataReader ExcuteReader(string cmdText, CommandType cmdType, params OleDbParameter[] cmdParams) { OleDbConnection conn = new OleDbConnection(ConnectionString); OleDbCommand comm = new OleDbCommand(); PrepareCommand(comm, conn, cmdText, cmdType, cmdParams); try { //自动关闭 return comm.ExecuteReader(CommandBehavior.CloseConnection); } catch (OleDbException ex) { throw ex; } } /// <summary> /// 封装Commond对象的ExecuteScalar方法,用于返回首行首列数据 /// </summary> /// <param name="conn">Connection对象</param> /// <param name="cmdText">Command.CommandText</param> /// <param name="cmdType">Command.CommandType</param> /// <param name="cmdParams">Command.Parameters</param> /// <returns>返回的是object单一的值</returns> public static object ExecuteScalar(string cmdText, CommandType cmdType, params OleDbParameter[] cmdParams) { OleDbConnection conn = new OleDbConnection(ConnectionString); OleDbCommand comm = new OleDbCommand(); PrepareCommand(comm, conn, cmdText, cmdType, cmdParams); try { return comm.ExecuteScalar(); } catch (OleDbException ex) { throw ex; } finally { conn.Close(); } } /// <summary> /// 主要用于返回DataTable 查询的数据 /// </summary> /// <param name="conn">Connection对象</param> /// <param name="cmdText">Command.CommandText</param> /// <param name="cmdType">Command.CommandType</param> /// <param name="cmdParams">Command.Parameters</param> /// <returns>返回DataTable对象</returns> public static DataTable GetDataTable(string cmdText, CommandType cmdType, params OleDbParameter[] cmdParams) { OleDbConnection conn = new OleDbConnection(ConnectionString); OleDbCommand comm = new OleDbCommand(); PrepareCommand(comm, conn, cmdText, cmdType, cmdParams); OleDbDataAdapter da = new OleDbDataAdapter(); da.SelectCommand = comm; DataSet ds = new DataSet(); try { //自动打开自动关闭 实现断开式的链接 da.Fill(ds); return ds.Tables[0]; } catch (OleDbException ex) { throw ex; } finally { conn.Close(); } } /// <summary> /// 主要用于给Command对象进行初始化赋值工作 /// </summary> /// <param name="comm">是操作的Comman对象</param> /// <param name="conn">Connection对象</param> /// <param name="cmdText">Command.CommandText</param> /// <param name="cmdType">Command.CommandType</param> /// <param name="cmdParams">Command.Parameters</param> private static void PrepareCommand(OleDbCommand comm, OleDbConnection conn, string cmdText, CommandType cmdType, OleDbParameter[] cmdParams) { if (conn.State == ConnectionState.Closed) conn.Open(); comm.Connection = conn; comm.CommandText = cmdText; comm.CommandType = cmdType; if (cmdParams != null) { for (int i = 0; i < cmdParams.Length; i++) { comm.Parameters.Add(cmdParams[i]); } } } }
比较全的写法:
public static class DBHelper { private static SqlConnection connection; public static SqlConnection Connection { get { string connectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; if (connection == null) { connection = new SqlConnection(connectionString); connection.Open(); } else if (connection.State == System.Data.ConnectionState.Closed) { connection.Open(); } else if (connection.State == System.Data.ConnectionState.Broken) { connection.Close(); connection.Open(); } return connection; } } public static int ExecuteCommand(string safeSql) { SqlCommand cmd = new SqlCommand(safeSql, Connection); int result = cmd.ExecuteNonQuery(); return result; } public static int ExecuteCommand(string sql, params SqlParameter[] values) { SqlCommand cmd = new SqlCommand(sql, Connection); cmd.Parameters.AddRange(values); return cmd.ExecuteNonQuery(); } public static int GetScalar(string safeSql) { SqlCommand cmd = new SqlCommand(safeSql, Connection); int result = Convert.ToInt32(cmd.ExecuteScalar()); return result; } public static int GetScalar(string sql, params SqlParameter[] values) { SqlCommand cmd = new SqlCommand(sql, Connection); cmd.Parameters.AddRange(values); int result = Convert.ToInt32(cmd.ExecuteScalar()); return result; } public static SqlDataReader GetReader(string safeSql) { SqlCommand cmd = new SqlCommand(safeSql, Connection); SqlDataReader reader = cmd.ExecuteReader(); return reader; } public static SqlDataReader GetReader(string sql, params SqlParameter[] values) { SqlCommand cmd = new SqlCommand(sql, Connection); cmd.Parameters.AddRange(values); SqlDataReader reader = cmd.ExecuteReader(); return reader; } public static DataTable GetDataSet(string safeSql) { DataSet ds = new DataSet(); SqlCommand cmd = new SqlCommand(safeSql, Connection); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds); return ds.Tables[0]; } public static DataTable GetDataSet(string sql, params SqlParameter[] values) { DataSet ds = new DataSet(); SqlCommand cmd = new SqlCommand(sql, Connection); cmd.Parameters.AddRange(values); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds); return ds.Tables[0]; } public static object GetValueByWhetherNull(object obj) { return obj == null ? (object)DBNull.Value : obj; } }
通过重载:
public class DataBaseHelper { /// <summary> /// 定义静态的连接字符串 /// </summary> private static string ConnString { get { return System.Configuration.ConfigurationManager.ConnectionStrings["ErpConnString"].ConnectionString; } } /// <summary> /// 用于执行一个insert/update/delete语句或则相应的存储过程 /// </summary> /// <param name="cmdText">insert/update/delete SQL语句或则 存储过程</param> /// <param name="type">指定命令的类型</param> /// <param name="pars">参数集合</param> /// <returns>int</returns> private static int ExcuteSqlReturnInt(string cmdText, CommandType type, params SqlParameter[] pars) { //实例化连接对象 SqlConnection conn = new SqlConnection(); try { //打开连接对象 if (conn.State == ConnectionState.Closed || conn.State == ConnectionState.Broken) { conn.Open(); } //实例化命令对象 SqlCommand sqlcommand = new SqlCommand(cmdText, conn); //对命令对象参数集合赋值 if (pars != null && pars.Length > 0) { foreach (SqlParameter p in pars) { sqlcommand.Parameters.Add(p); } } //给命令对象指定类型 sqlcommand.CommandType = type; //通过ExecuteNonQuery执行数据库命令,并返回数据库受影响的行数。 int count = sqlcommand.ExecuteNonQuery(); return count; } catch (Exception ex) { return 0; } finally { conn.Close(); } } /// <summary> /// 执行一个Select语句或则相关的存储过程 并返回DataSet /// </summary> /// <param name="cmdText">Select语句或则相关的存储过程</param> /// <param name="type">命令对象类型</param> /// <param name="pars">Select语句或则相关的存储过程 所需的参数</param> /// <returns>DataSet</returns> private static DataSet SelectSQLReturnDataSet(string cmdText, CommandType type, params SqlParameter[] pars) { SqlConnection conn = new SqlConnection(ConnString); SqlDataAdapter sqldataadapter = new SqlDataAdapter(cmdText, conn); if (pars != null && pars.Length > 0) { foreach (SqlParameter p in pars) { sqldataadapter.SelectCommand.Parameters.Add(p); } } sqldataadapter.SelectCommand.CommandType = type; DataSet dt = new DataSet(); sqldataadapter.Fill(dt); return dt; } /// <summary> /// 执行一个Select语句或则相关的存储过程 并返回DataSet /// </summary> /// <param name="cmdText">Select语句或则相关的存储过程</param> /// <param name="type">命令对象类型</param> /// <param name="pars">Select语句或则相关的存储过程 所需的参数</param> /// <returns>DataSet</returns> private static DataSet SelectSQLReturnDataSet(string cmdText, CommandType type) { SqlConnection conn = new SqlConnection(ConnString); SqlDataAdapter sqldataadapter = new SqlDataAdapter(cmdText, conn); sqldataadapter.SelectCommand.CommandType = type; DataSet dt = new DataSet(); sqldataadapter.Fill(dt); return dt; } /// <summary> /// 执行一个Select语句或则相关的存储过程 并返回DataTable /// </summary> /// <param name="cmdText">Select语句或则相关的存储过程</param> /// <param name="type">命令对象类型</param> /// <param name="pars">Select语句或则相关的存储过程 所需的参数</param> /// <returns>DataTable</returns> private static DataTable SelectSQLReturnTable(string cmdText, CommandType type, SqlParameter[] pars) { SqlConnection conn = new SqlConnection(ConnString); SqlDataAdapter sqldataadatapter = new SqlDataAdapter(cmdText, conn); if (pars != null && pars.Length > 0) { foreach (SqlParameter p in pars) { sqldataadatapter.SelectCommand.Parameters.Add(p); } } sqldataadatapter.SelectCommand.CommandType = type; DataTable dt = new DataTable(); sqldataadatapter.Fill(dt); return dt; } /// <summary> /// 执行一个Select语句或则相关的存储过程 并返回DataTable /// </summary> /// <param name="cmdText">Select语句或则相关的存储过程</param> /// <param name="type">命令对象类型</param> /// <param name="pars">Select语句或则相关的存储过程 所需的参数</param> /// <returns>DataTable</returns> private static DataTable SelectSQLReturnTable(string cmdText, CommandType type) { SqlConnection conn = new SqlConnection(ConnString); SqlDataAdapter sqldataadatapter = new SqlDataAdapter(cmdText, conn); sqldataadatapter.SelectCommand.CommandType = type; DataTable dt = new DataTable(); sqldataadatapter.Fill(dt); return dt; } /// <summary> /// 执行一个Select语句或则相关的存储过程 并返回查询对象 /// </summary> /// <param name="cmdText">Select语句或则相关的存储过程</param> /// <param name="type">命令对象类型</param> /// <param name="pars">Select语句或则相关的存储过程 所需的参数</param> /// <returns>object</returns> private static object SelectSQLReturnObject(string cmdText, CommandType type, SqlParameter[] pars) { SqlConnection conn = new SqlConnection(ConnString); try { SqlCommand cmd = new SqlCommand(cmdText, conn); if (pars != null && pars.Length > 0) { foreach (SqlParameter p in pars) { cmd.Parameters.Add(pars); } } if (conn.State == ConnectionState.Closed || conn.State == ConnectionState.Broken) { conn.Open(); } cmd.CommandType = type; object obj = cmd.ExecuteScalar(); return obj; } catch (Exception ex) { return null; } finally { conn.Close(); } } }
/// <summary> /// 执行一个Select语句或则相关的存储过程 并返回一个数据阅读器对象 /// </summary> /// <param name="cmdText">Select语句或则相关的存储过程</param> /// <param name="type">指定命令对象的类型</param> /// <param name="pars">参数结合</param> /// <returns>SqlDataReader</returns> private static SqlDataReader SelectSQLReturnReader(string cmdText, CommandType type, SqlParameter[] pars) { SqlConnection conn = new SqlConnection(ConnString); try { SqlCommand cmd = new SqlCommand(cmdText, conn); if (pars != null && pars.Length > 0) { foreach (SqlParameter p in pars) { cmd.Parameters.Add(p); } } if (conn.State == ConnectionState.Closed) { conn.Open(); } cmd.CommandType = type; SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); return reader; } catch (Exception ex) { return null; } }
重载的方法:
/// <summary> /// 实现所有对SQL Server数据库的所有访问操作 /// </summary> public class SqlDBHelp { private static string _connStr = "server=.uid=sa;pwd=;database=B2C"; private static SqlConnection sqlcon; /// <summary> /// 获取一个可用于数据库操作的连接类 /// </summary> private static SqlConnection Connection { get { if (sqlcon == null) { sqlcon = new SqlConnection(_connStr); sqlcon.Open(); } else if (sqlcon.State == ConnectionState.Broken || sqlcon.State == ConnectionState.Closed) { sqlcon.Close(); sqlcon.Open(); } return sqlcon; } } /// <summary> /// 根据查询的语句返回执行受影响的行数 /// </summary> /// <param name="strsql">Insert、Update、Delete语句</param> /// <returns>执行受影响的行数</returns> public static int GetExecute(string strsql) { int i=-1; try { SqlCommand sqlcmd = new SqlCommand(strsql, Connection); i= sqlcmd.ExecuteNonQuery(); } catch (Exception ex) { throw new Exception(ex.Message); } finally { CloseConnection(); } return i; } /// <summary> /// 根据查询的语句返回执行受影响的行数 /// </summary> /// <param name="strsql">Insert、Update、Delete语句</param> /// <param name="p">给SQL语句传递的参数集合</param> /// <returns>执行受影响的行数</returns> public static int GetExecute(string strsql,params SqlParameter[] p) { int i = -1; try { SqlCommand sqlcmd = new SqlCommand(strsql, Connection); sqlcmd.Parameters.AddRange(p); i = sqlcmd.ExecuteNonQuery(); } catch (Exception ex) { throw new Exception(ex.Message); } finally { CloseConnection(); } return i; } /// <summary> /// 根据查询的语句获取查询的结果集 /// </summary> /// <param name="strsql">Select语句</param> /// <returns>查询的结果-表数据</returns> public static DataTable GetTable(string strsql) { DataTable dt = null; try { SqlDataAdapter sda = new SqlDataAdapter(strsql, Connection); dt = new DataTable(); sda.Fill(dt); } catch (Exception ex) { throw new Exception(ex.Message); } finally { CloseConnection(); } return dt; } /// <summary> /// 根据查询的语句获取查询的结果集 /// </summary> /// <param name="strsql">Select语句</param> /// <param name="p">给SQL语句传递的参数集合</param> /// <returns>查询的结果-表数据</returns> public static DataTable GetTable(string strsql,params SqlParameter[] p) { DataTable dt = null; try { SqlDataAdapter sda = new SqlDataAdapter(strsql, Connection); sda.SelectCommand.Parameters.AddRange(p); dt = new DataTable(); sda.Fill(dt); } catch (Exception ex) { throw new Exception(ex.Message); } finally { CloseConnection(); } return dt; } /// <summary> /// 根据查询的语句返回一个值 /// </summary> /// <param name="strsql">Select语句</param> /// <returns>单值</returns> public static string GetSingle(string strsql) { object o = ""; try { SqlCommand sqlcmd = new SqlCommand(strsql, Connection); o = sqlcmd.ExecuteScalar(); } catch (Exception ex) { throw new Exception(ex.Message); } finally { CloseConnection(); } return o.ToString(); } /// <summary> /// 根据查询的语句返回一个值 /// </summary> /// <param name="strsql">Select语句</param> /// <param name="p">给SQL语句传递的参数集合</param> /// <returns>单值</returns> public static string GetSingle(string strsql,params SqlParameter[] p) { object o = ""; try { SqlCommand sqlcmd = new SqlCommand(strsql, Connection); sqlcmd.Parameters.AddRange(p); o = sqlcmd.ExecuteScalar(); } catch (Exception ex) { throw new Exception(ex.Message); } finally { CloseConnection(); } return o.ToString(); } /// <summary> /// 根据查询语句返回轻量级的SqlDataReader对象 /// </summary> /// <param name="strsql">Select语句</param> /// <returns>轻量级的SqlDataReader对象</returns> public static SqlDataReader GetReader(string strsql) { SqlCommand sqlcmd = new SqlCommand(strsql,Connection); return sqlcmd.ExecuteReader(CommandBehavior.CloseConnection); } /// <summary> /// 根据查询语句返回轻量级的SqlDataReader对象 /// </summary> /// <param name="strsql">Select语句</param> /// <param name="p">给SQL语句传递的参数集合</param> /// <returns>轻量级的SqlDataReader对象</returns> public static SqlDataReader GetReader(string strsql,params SqlParameter[] p) { SqlCommand sqlcmd = new SqlCommand(strsql, Connection); sqlcmd.Parameters.AddRange(p); return sqlcmd.ExecuteReader(CommandBehavior.CloseConnection); } public static bool GetTransOperate(string[] strsqls) { bool isflag = false; SqlTransaction trans=Connection.BeginTransaction(); SqlCommand sqlcmd = new SqlCommand(); try { foreach (string s in strsqls) { sqlcmd.CommandText = s; sqlcmd.Connection = sqlcon; sqlcmd.ExecuteNonQuery(); } isflag = true; trans.Commit(); } catch (Exception ex) { isflag = false; trans.Rollback(); throw new Exception(ex.Message); } finally { CloseConnection(); } return isflag; } /// <summary> /// 关闭数据库连接 /// </summary> private static void CloseConnection() { if (sqlcon != null) { sqlcon.Close(); } } }