.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
[ASP.net(C#)]自定义数据库操作类(一)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

这两天写了个类。针对Sql server和OLE数据库所写的。源码如下:

\Classes\DbControl.cs
==========================================================

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;

namespace GuestBook
{
 /// <summary>
 /// DbControl 的摘要描述。
 /// </summary>
 public class DbControl:Classes.DataBaseType.DbOpen
 {
  //類成員定義。
  private int record_total = 0;
  protected string DBTYPE,SQL_SELECT;
  protected SqlConnection sqlConn;
  protected OleDbConnection oleConn;
  protected SqlCommand sqlCmd;
  protected OleDbCommand oleCmd;
  protected DataSet ds = new DataSet();

  public int RecordTotal
  {
   get
   {
    switch (DBTYPE)
    {
     case "SQL":
      sqlCmd.Cancel();
      sqlCmd.CommandText = SQL_SELECT;
      SqlDataReader sqlDr;
      sqlDr = sqlCmd.ExecuteReader();
      while (sqlDr.Read())
      {
       record_total++;
      }
      sqlDr.Close();
      break;
     case "OLE":
      oleCmd.Cancel();
      oleCmd.CommandText = SQL_SELECT;
      OleDbDataReader oleDr;
      oleDr = oleCmd.ExecuteReader();
      while (oleDr.Read())
      {
       record_total++;
      }
      oleDr.Close();
      break;
    }
    return record_total;
   }
  }

  public DbControl(string dbType,string dbName)
  {
   //重載構造函數。
   DBTYPE = dbType.ToUpper();
   switch (dbType.ToUpper())
   {
    case "SQL":
     sqlConn = this.SqlConnect(dbName);
     oleConn.Close();
     oleConn.Dispose();
     break;
    case "OLE":
     oleConn = this.OleConnect(dbName);
     oleConn.Close();
     oleConn.Dispose();
     break;
   }
  }

  public DbControl():base()
  {
   //
   // TODO: 在這裡加入建構函式的程式碼
   //
  }

  public void Open(string dbType,string dbName)
  {
   //數據庫文件打開。
   DBTYPE = dbType.ToUpper();
   switch (dbType.ToUpper())
   {
    case "SQL":
     sqlConn = this.SqlConnect(dbName);
     break;
    case "OLE":
     oleConn = this.OleConnect(dbName);
     break;
   }
  }

  public SqlDataReader SqlGetReader(string strQuery)
  {
   //返回一個SqlDataReader。用於Sql server
   SQL_SELECT = strQuery;
   sqlCmd = new SqlCommand(strQuery,sqlConn);
   SqlDataReader dr;
   try
   {
    sqlCmd.Connection.Open();
   }
   catch (Exception e)
   {
    throw e;
   }
   dr = sqlCmd.ExecuteReader();
   return dr;
  }

  public OleDbDataReader OleGetReader(string strQuery)
  {
   //返回一個OleDbDataReader。用於OleDb
   SQL_SELECT = strQuery;
   oleCmd = new OleDbCommand(strQuery,oleConn);
   OleDbDataReader dr;
   try
   {
    oleCmd.Connection.Open();
   }
   catch (Exception e)
   {
    throw e;
   }
   dr = oleCmd.ExecuteReader();
   return dr;
  }

  public int SqlRunCommand(string strQuery)
  {
   //執行一條SQL語句。包括記錄插入、更新、刪除。用於Sql server
   SQL_SELECT = strQuery;
   sqlCmd = new SqlCommand(strQuery,sqlConn);
   try
   {
    sqlCmd.Connection.Open();
   }
   catch (Exception e)
   {
    throw e;
   }
   return sqlCmd.ExecuteNonQuery();
  }

  public int OleRunCommand(string strQuery)
  {
   //執行一條SQL語句。包括記錄插入、更新、刪除。用於OleDb
   SQL_SELECT = strQuery;
   oleCmd = new OleDbCommand(strQuery,oleConn);
   try
   {
    oleCmd.Connection.Open();
   }
   catch (Exception e)
   {
    throw e;
   }
   return oleCmd.ExecuteNonQuery();
  }

  public DataView SqlGetDataSet(string strQuery)
  {
   //返回一個DataSet。用於Sql server
   SQL_SELECT = strQuery;
   sqlCmd = new SqlCommand(strQuery,sqlConn);
   try
   {
    sqlCmd.Connection.Open();
   }
   catch (Exception e)
   {
    throw e;
   }
   SqlDataAdapter da = new SqlDataAdapter();
   da.SelectCommand = sqlCmd;
   da.Fill(ds,"DefaultTable");
   return ds.Tables["DefaultTable"].DefaultView;
  }

  public DataView OleGetDataSet(string strQuery)
  {
   //返回一個DataSet。用於OleDb
   SQL_SELECT = strQuery;
   oleCmd = new OleDbCommand(strQuery,oleConn);
   try
   {
    oleCmd.Connection.Open();
   }
   catch (Exception e)
   {
    throw e;
   }
   OleDbDataAdapter da = new OleDbDataAdapter();
   da.SelectCommand = oleCmd;
   da.Fill(ds,"DefaultTable");
   return ds.Tables["DefaultTable"].DefaultView;
  }

  public void Close()
  {
   //數據庫關閉。
   switch (DBTYPE)
   {
    case "SQL":
     sqlCmd.Cancel();
     sqlCmd.Dispose();
     sqlConn.Close();
     sqlConn.Dispose();
     break;
    case "OLE":
     oleCmd.Cancel();
     oleCmd.Dispose();
     oleConn.Close();
     oleConn.Dispose();
     break;
   }
   ds.Clear();
   ds.Dispose();
  }
 }
}

============================================================

\Classes\DataBaseType\DbOpen.cs
============================================================

using System;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Configuration;

namespace GuestBook.Classes.DataBaseType
{
 /// <summary>
 /// DbOpen 的摘要描述。
 /// </summary>
 public class DbOpen
 {
  public DbOpen()
  {
   //
   // TODO: 在這裡加入建構函式的程式碼
   //
  }

  protected SqlConnection SqlConnect(string dbName)
  {
   SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings[dbName]);
   return conn;
  }

  protected OleDbConnection OleConnect(string dbName)
  {
   OleDbConnection conn = new OleDbConnection(ConfigurationSettings.AppSettings[dbName]);
   return conn;
  }
 }
}

==============================================================

类的调用方法:
==============================================================

   DbControl objDbControl = new DbControl();
   string SQL = "SELECT * FROM content";

   objDbControl.Open("sql","sqlConnection");
   dgList.DataSource = objDbControl.SqlGetDataSet(SQL);
   intTotal = objDbControl.RecordTotal;
   dgList.DataBind();
   objDbControl.Close();

==============================================================
其中“intTotal = objDbControl.RecordTotal;”即返回记录总数。
可以把它插入到DataGrid中。如:
==============================================================

  private void dgList_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   if (e.Item.ItemType == ListItemType.Pager)
   {
    System.Text.StringBuilder pagerString = new System.Text.StringBuilder();
    pagerString.Append("總計" + intTotal.ToString() + "  共" + dgList.PageCount + "頁  每頁" + dgList.PageSize + "筆");
    e.Item.Cells[0].Controls.AddAt(0,new LiteralControl(pagerString.ToString())) ;
   }
  }

==============================================================




相关文章

相关软件