黑马程序员技术交流社区

标题: 我写的一个数据库连接层,大家给点建议 [打印本页]

作者: 笔墨伺候    时间: 2012-10-18 14:08
标题: 我写的一个数据库连接层,大家给点建议

DB.cs(这个是关于access的数据库连接层)
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Web;
  4. using System.Data.OleDb;
  5. using System.Data;

  6. namespace test9
  7. {
  8.     public class DB
  9.     {
  10.         //连接字符串
  11.         // private string conString = ConfigurationManager.ConnectionStrings["site"].ConnectionString;
  12.         private string conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + HttpContext.Current.Server.MapPath("~/App_Data/site.mdb");
  13.         private OleDbConnection con;      

  14.         //打开一个数据库连接
  15.         private void open()
  16.         {
  17.             if (this.con == null)
  18.             {
  19.                 this.con = new OleDbConnection(conString);
  20.             }
  21.             this.con.Open();
  22.         }

  23.         //关闭一个数据库连接
  24.         private void close()
  25.         {
  26.             if (this.con.State != ConnectionState.Closed)
  27.             {
  28.                 this.con.Close();
  29.             }
  30.         }
  31.         //无返回值查询
  32.         public void noneQ(string sql, params OleDbParameter[] sps)
  33.         {
  34.             this.open();
  35.             using (OleDbCommand cmd = new OleDbCommand(sql, this.con))
  36.             {
  37.                 foreach (OleDbParameter sp in sps)
  38.                 {
  39.                     cmd.Parameters.Add(sp);
  40.                 }
  41.                 cmd.ExecuteNonQuery();
  42.             }
  43.             this.close();
  44.         }
  45.         //返回单个值查询
  46.         public object oneQ(string sql, params OleDbParameter[] sps)
  47.         {
  48.             object re;
  49.             this.open();
  50.             using (OleDbCommand cmd = new OleDbCommand(sql, this.con))
  51.             {
  52.                 foreach (OleDbParameter sp in sps)
  53.                 {
  54.                     cmd.Parameters.Add(sp);
  55.                 }
  56.                 re = cmd.ExecuteScalar();
  57.             }
  58.             this.close();
  59.             return re;

  60.         }
  61.         //返回一个DataTable
  62.         public DataTable excuteTable(string sql, params OleDbParameter[] sps)
  63.         {
  64.             DataTable table;
  65.             this.open();
  66.             using (OleDbCommand cmd = new OleDbCommand(sql, this.con))
  67.             {
  68.                 foreach (OleDbParameter sp in sps)
  69.                 {
  70.                     cmd.Parameters.Add(sp);
  71.                 }
  72.                 DataSet ds = new DataSet();
  73.                 OleDbDataAdapter sda = new OleDbDataAdapter(cmd);
  74.                 sda.Fill(ds);
  75.                 table = ds.Tables[0];

  76.             }
  77.             this.close();
  78.             return table;
  79.         }

  80.         public DataTable excuteTable(string sql)
  81.         {
  82.             DataTable table;
  83.             this.open();
  84.             using (OleDbCommand cmd = new OleDbCommand(sql, this.con))
  85.             {
  86.                 DataSet ds = new DataSet();
  87.                 OleDbDataAdapter sda = new OleDbDataAdapter(cmd);
  88.                 sda.Fill(ds);
  89.                 table = ds.Tables[0];

  90.             }
  91.             this.close();
  92.             return table;
  93.         }
  94.         //带有事务
  95.         public string transaction(params string[] cmds)
  96.         {
  97.             this.open();
  98.             OleDbTransaction ot = con.BeginTransaction();
  99.             OleDbCommand cmd = new OleDbCommand();
  100.             cmd.Transaction = ot;
  101.             cmd.Connection = con;

  102.             try
  103.             {

  104.                 foreach (string cm in cmds)
  105.                 {
  106.                     cmd.CommandText = cm;
  107.                     cmd.ExecuteNonQuery();
  108.                 }

  109.                 ot.Commit();
  110.                 return "操作成功";

  111.             }
  112.             catch (Exception ex)
  113.             {
  114.                 ot.Rollback();
  115.                 return "操作失败,错误信息:" + ex.Message;
  116.             }
  117.             finally
  118.             {
  119.                 this.close();
  120.             }
  121.         }

  122.     }
  123. }
复制代码
大家给提点建议,毕竟这些东西是可以重用的







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2