自己寫的一個數據庫操作類(C#)[原創]

  前段時間,搞.net,有些數據庫操作方面的事,要是每個都寫那麼多。那還不累死,就想寫個類,把操作都封裝起來,由於當時學習.net才1,2個星期,寫得不是太好,現在也不想再改了,個人思維就定了,怎麼改也差不多了,嘿嘿~~
  首先在web.config文件中加這麼一段:
  <appSettings>
    <add key="conn_handler" value="sqlserver.htm" />
    <add key="conn_string" value="Persist Security Info=False;Data Source=localhost;Initial Catalog=northwind;User ID=xxxx;Password=xxxxxx;" />
    <add key="conn_datebasetype" value="SQLServer" />
    <add key="conn_schema" value="" />
    <add key="conn_catalog" value="" />
    </appSettings>
  和<system.web></system.web>是平行的關係,這樣做是在類中可以調用它,爲什麼就不多說了。
  下面是這個類的全部代碼:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;

namespace DBOperate
{
 /// <summary>
 /// 創建一個數據庫對象,以實現數據操作。
 /// </summary>
 public class DBObject
 {
  private string ConnectionString;
  private SqlConnection objConn;
  private string objSelectString;
  private string objInsertString;
  private string objUpdateString;
  private string objDeleteString;
  private SqlDataReader objDR;
  private SqlCommand objCmd;
  private string objErrMessage=null;
  private string tempErrMessage=null;
  private SqlDataAdapter objDA;
  private DataSet objDS;
  private DataView objDW;
  private DataGrid objDataGrid;
  private string objViewRowFilter=null;
  private string objViewSort=null;
  public DBObject()
  {
   //
   // TODO: 在此處添加構造函數邏輯
   //
   DBConn();
  }  
  private void DBConn()
  {
   ConnectionString =System.Configuration.ConfigurationSettings.AppSettings["conn_string"];
   objConn = new SqlConnection(ConnectionString);
   objConn.Open();
  }
  public void DBClose()
  {
   objConn.Close();
  }

  public string SelectString
  {
   set
   {
    objSelectString=value;    
   }
  }
  public string InsertString
  {
   set
   {
    objInsertString=value;
    DBInsert();
   }
  }
  public string UpdateString
  {
   set
   {
    objUpdateString=value;
    DBUpdate();
   }
  }
  public string DeleteString
  {
   set
   {
    objDeleteString=value;
    DBDelete();
   }
  }
  public string ErrMessage
  {
   get
   {
    tempErrMessage=objErrMessage;
    objErrMessage=null;
    return tempErrMessage;
   }
  }
  public SqlDataReader DR
  {
   get
   {
    GetDR();
    return objDR;    
   }
  }
  public void DRClose()
  {
   objDR.Close();
  }
  public void GetDR()
  {
   try
   {
    using (objCmd=new SqlCommand(objSelectString,objConn))
    {
     objDR=objCmd.ExecuteReader();
    }
   }
   catch (System.Exception e)
   {
    objErrMessage+="數據讀取出錯:";
    objErrMessage+="<br>";
    objErrMessage+=e.Message;
    objErrMessage+="<br>";
   }
  }
  public void objDRRead()
  {
   objDR.Read();
  }
  public bool SelectEmpty()
  {
   if (objDR.Read()) return false;
   else return true;
  }
  public string GetDRItem(string objDRItem)
  {
   return objDR[objDRItem].ToString();   
  }
  public DataSet DS
  {
   get
   {
    try
    {
     using (objDA = new SqlDataAdapter(objSelectString,objConn))
     {
      objDS=new DataSet();
      objDA.Fill(objDS);
     }  
    }
    catch (System.Exception e)
    {
     objErrMessage+="數據讀取出錯:";
     objErrMessage+="<br>";
     objErrMessage+=e.Message;
     objErrMessage+="<br>";     
    }
    return objDS;  
   }
  }
  public DataView DW
  {
   get
   {
    try
    {
     using (objDA = new SqlDataAdapter(objSelectString,objConn))
     {
      objDS=new DataSet();
      objDA.Fill(objDS);
      objDW=new DataView(objDS.Tables[0]);
      objDW.RowFilter=objViewRowFilter;
      objDW.Sort=objViewSort;
     }
    }
    catch (System.Exception e)
    {
     objErrMessage+="數據讀取出錯:";
     objErrMessage+="<br>";
     objErrMessage+=e.Message;
     objErrMessage+="<br>";
    }
    return objDW;
   }
  }
  public DataGrid DGridBindDS
  {
   set
   {
    objDataGrid=value;
    BindDS();    
   }
  }
  public DataGrid DGridBindDR
  {
   set
   {
    objDataGrid=value;
    BindDR();
   }
  }
  public string ViewRowFilter
  {
   set
   {
    if (objViewRowFilter==null)
    {
     objViewRowFilter=value;
    }
    else
    {
     objViewRowFilter+=" and ";
     objViewRowFilter+=value;
    }
   }
  }
  public string ViewSort
  {
   set
   {
    objViewSort=value;
   }
  }
  private void BindDR()
  {   
   try
   {
    using (objCmd=new SqlCommand(objSelectString,objConn))
    {
     objDR=objCmd.ExecuteReader();
     objDataGrid.DataSource=objDR;
     objDataGrid.DataBind();
     objDR.Close();
    }
   }
   catch (System.Exception e)
   {
    objErrMessage+="數據讀取出錯:";
    objErrMessage+="<br>";
    objErrMessage+=e.Message;
    objErrMessage+="<br>";
   }  
  }
  private void BindDS()
  {
   try
   {
    using (objDA = new SqlDataAdapter(objSelectString,objConn))
    {
     objDS=new DataSet();
     objDA.Fill(objDS);
     objDataGrid.DataSource=objDS;
     objDataGrid.DataBind();
    }
   }
   catch (System.Exception e)
   {
    objErrMessage+="數據讀取出錯:";
    objErrMessage+="<br>";
    objErrMessage+=e.Message;
    objErrMessage+="<br>";
   }  
  }  
  
  private void DBInsert()
  {   
   using (objCmd=new SqlCommand(objInsertString,objConn))
   {
    try
    {
     objCmd.ExecuteNonQuery();
    }
    catch (System.Exception e)
    {
     objErrMessage+="數據插入出錯:";
     objErrMessage+="<br>";
     objErrMessage+=e.Message;
     objErrMessage+="<br>";
    }
   }
  }
  private void DBUpdate()
  {
   using (objCmd=new SqlCommand(objUpdateString,objConn))
   {
    try
    {
     objCmd.ExecuteNonQuery();
    }
    catch (System.Exception e)
    {
     objErrMessage+="數據更新出錯:";
     objErrMessage+="<br>";
     objErrMessage+=e.Message;
     objErrMessage+="<br>";
    }
   }
  }
  private void DBDelete()
  {
   using (objCmd=new SqlCommand(objDeleteString,objConn))
   {
    try
    {
     objCmd.ExecuteNonQuery();
    }
    catch (System.Exception e)
    {
     objErrMessage+="數據刪除出錯:";
     objErrMessage+="<br>";
     objErrMessage+=e.Message;
     objErrMessage+="<br>";
    }
   }
  }
 }
}
  使用方法:
  先添加引用,再創建一個DBObject對象,假設是obj,創建對象的同時就和數據庫連接上了,所以用完了調用一個DBClose()方法,關閉數據庫連接。
  屬性說明:
  SelectString,UpdateString,DeleteString,InsertString,看字面意思就知道了,給這四個屬性賦值後,相應的操作就完成了,我已經寫在屬性的Set方法中了。
  給SelectString賦值後,就可以返回我們要的東西了。可以返回dataset,dataview,datareader,還可以直接就把控件和數據庫綁定,具體可以查看代碼。
  由於水平有限,寫得不好,有好的意見可以給我留言,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章