DBHelper数据库操作类
vs2010+Access开发程序用到的DBHelper类
分享备用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.OleDb; using System.Collections; using System.Windows.Forms; namespace DBHelper { class DBHelp { //SqlDataReader dataReader = null; //dataRader 对象 OleDbDataReader dr = null; //SqlCommand com = null; //执行命令 OleDbCommand cmd = null; //SqlConnection con = null; //连库类 OleDbConnection conn = null; OleDbDataAdapter sda = null; /// <summary> /// 构造函数 /// </summary> public DBHelp() { //连接数据库字符串 string dbpath = Application.StartupPath+"\\"; //string connStr = @"Provider=Microsoft.Jet.OleDB.4.0;Data Source=E:\db.mdb;Jet OleDb:DataBase Password=dbdb"; //获取程序当前目录下的数据库 string connStr = @"Provider=Microsoft.Jet.OleDB.4.0;Data Source="+dbpath+"db.mdb;Jet OleDb:DataBase Password=dbdb"; conn = new OleDbConnection(connStr); //打开数据库连接 conn.Open(); cmd = new OleDbCommand(); cmd.Connection = conn; } /// <summary> /// 增删改查 /// </summary> /// <param name="sql"></param> /// <returns></returns> public int GetAddUpDel(string sql) { //cmd.CommandText = sql; OleDbCommand cmd = new OleDbCommand(sql, conn); int data = Convert.ToInt32(cmd.ExecuteScalar()); return data; } /// <summary> /// 增删改查,参数查询 /// </summary> /// <param name="sql"></param> /// <returns></returns> public int UpdateDeleteAdd(string sql,string query1,string query2) { cmd.CommandText = sql; cmd.Parameters.AddWithValue(query1,query2); int data = Convert.ToInt32(cmd.ExecuteScalar()); return data; } ///<summary> ///带参数的执行命令 ///</summary> ///<param name="sql"></param> ///<returns></returns> public int ExecuteCommand(string sql, params OleDbParameter[] values) { OleDbCommand cmd = new OleDbCommand(sql, conn); cmd.Parameters.AddRange(values); return cmd.ExecuteNonQuery(); } /// <summary> /// 增删改查,参数查询,两个参数 /// </summary> /// <param name="sql"></param> /// <returns></returns> public int GetData_value(string sql, string query1, string query2,string query3, string query4) { cmd.CommandText = sql; cmd.Parameters.AddWithValue(query1, query2); cmd.Parameters.AddWithValue(query3, query4); int data = Convert.ToInt32(cmd.ExecuteScalar()); return data; } /// <summary> /// 查询多个值的方法,正解20160816 /// </summary> /// <param name="sql"></param> /// <returns></returns> public OleDbDataReader GetReader(string safeSql ,string query1, string query2) { OleDbCommand cmd = new OleDbCommand(safeSql, conn); cmd.Parameters.AddWithValue(query1, query2); // return cmd.ExecuteReader(CommandBehavior.CloseConnection); return cmd.ExecuteReader(); } /// <summary> /// 查询多个值的方法,过时 /// </summary> /// <param name="sql"></param> /// <returns></returns> public OleDbDataReader GetDataReader(string sql) { cmd.CommandText = sql; dr = cmd.ExecuteReader(); return dr; } /// <summary> /// 查询多个值的方法,参数查询,过时 /// </summary> /// <param name="sql"></param> /// <returns></returns> public OleDbDataReader SelectAll(string sql, string query1, string query2) { // cmd.CommandText = sql; OleDbCommand cmd = new OleDbCommand(sql, conn); cmd.Parameters.AddWithValue(query1, query2); dr = cmd.ExecuteReader(); return dr; } /// <summary> /// 获取OleDbDataAdapter,参数查询 /// </summary> /// <param name="sql"></param> /// <returns></returns> public OleDbDataAdapter GetAdapter(string sql, string query1, string query2) { cmd.CommandText = sql; cmd.Parameters.AddWithValue(query1, query2); sda = new OleDbDataAdapter(cmd); return sda; } /// <summary> /// 获取OleDbDataAdapter,参数查询 /// </summary> /// <param name="sql"></param> /// <returns></returns> public DataSet GetDataSet(string strSQL) { OleDbCommand cmd = new OleDbCommand(strSQL, conn); OleDbDataAdapter da = new OleDbDataAdapter(); da.SelectCommand = cmd; DataSet ds = new DataSet(); da.Fill(ds); return ds; } ///<summary> ///执行查找语句,返回datatable对象 ///</summary> public DataTable GetDataTable(string strSQL) { DataTable dt = new DataTable(); try { OleDbDataAdapter sda = new OleDbDataAdapter(strSQL, conn); sda.Fill(dt); } catch (System.Data.SqlClient.SqlException ex) { throw new Exception(ex.Message); } return dt; } ///<summary> ///执行查找语句,返回datatable对象,带参数 ///</summary> public DataTable GetDataTable_var(string strSQL,string var1,string var2) { DataTable dt = new DataTable(); try { OleDbCommand cmd = new OleDbCommand(strSQL, conn); cmd.Parameters.AddWithValue(var1, var2); OleDbDataAdapter sda = new OleDbDataAdapter(); sda.SelectCommand = cmd; sda.Fill(dt); } catch (System.Data.SqlClient.SqlException ex) { throw new Exception(ex.Message); } return dt; } /// <summary> /// 执行多条SQL语句,实现数据库事务。 /// </summary> /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param> public static void ExecuteSqlTran(Hashtable SQLStringList) { //string connStr = @"Provider=Microsoft.Jet.OleDB.4.0;Data Source=E:\db.mdb;Jet OleDb:DataBase Password=dbdb"; string dbpath = Application.StartupPath + "\\"; string connStr = @"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" + dbpath + "db.mdb;Jet OleDb:DataBase Password=dbdb"; using (OleDbConnection conn = new OleDbConnection(connStr)) { conn.Open();//打开数据库连接 using (OleDbTransaction trans = conn.BeginTransaction())//开始数据库事务 { OleDbCommand cmd = new OleDbCommand();//创建SqlCommand命令 try { //循环 foreach (DictionaryEntry myDE in SQLStringList)//循环哈希表(本例中 即,循环执行添加在哈希表中的sql语句 { string cmdText = myDE.Key.ToString();//获取键值(本例中 即,sql语句) OleDbParameter[] cmdParms = (OleDbParameter[])myDE.Value;//获取键值(本例中 即,sql语句对应的参数) PrepareCommand(cmd, conn, trans, cmdText, cmdParms); //调用PrepareCommand()函数,添加参数 int val = cmd.ExecuteNonQuery();//调用增删改函数ExcuteNoQuery(),执行哈希表中添加的sql语句 cmd.Parameters.Clear(); //清除参数 } trans.Commit();//提交事务 } catch //捕获异常 { trans.Rollback(); //事务回滚 throw; //抛出异常 } } } } //添加参数 private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, string cmdText, OleDbParameter[] cmdParms) { if (conn.State != ConnectionState.Open)//如果数据库连接为关闭状态 conn.Open();//打开数据库连接 cmd.Connection = conn;//设置命令连接 cmd.CommandText = cmdText;//设置执行命令的sql语句 if (trans != null)//如果事务不为空 cmd.Transaction = trans;//设置执行命令的事务 cmd.CommandType = CommandType.Text;//设置解释sql语句的类型为“文本”类型(也是就说该函数不适用于存储过程) if (cmdParms != null)//如果参数数组不为空 { foreach (OleDbParameter parameter in cmdParms) //循环传入的参数数组 { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; //获取参数的值 } cmd.Parameters.Add(parameter);//添加参数 } } } /// <summary> /// 打开数据库连接 /// </summary> public void GetOpen() { conn.Open(); } /// <summary> /// 关闭数据库连接 /// </summary> public void GetClose() { conn.Close(); } } }