[ASP.net(C#)]自定义数据库操作类(一)
2004-10-14 12:04
756 查看
这两天写了个类。针对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())) ;
}
}
==============================================================
/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())) ;
}
}
==============================================================
相关文章推荐
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- Asp.net(c#)数据库操作类
- [ASP.net(C#)]数据库操作类(可用于任意数据库)
- asp.net(C#) 数据库操作类
- Asp.net(c#)数据库操作类
- Asp.net(c#)数据库操作类
- Asp.net(c#)数据库操作类
- Asp.net技巧:数据库操作类(C#)
- Asp.net(c#)数据库操作类
- asp.net数据库操作类(C#)
- Asp.net(c#)数据库操作类
- Asp.net(c#)数据库操作类
- 用C#写的ASP.NET数据库操作类知识
- asp.net和c#实现定时备份数据库(SQL Server2000)
- C#和asp.net中链接数据库中 参数的几种传递方法
- Asp.Net(C#) 遍历数据库表名,列名
- C# ASP.NET 走火入魔通用权限管理系统组件V3.2试用版下载地址【含数据库设计文档、使用手册】
- ASP.NET(C#)执行.SQL脚本实现数据库建表
- asp.net的数据库操作类文件 SqlOperate
- asp.net MVC中如何用Membership类和自定义的数据库进行登录验证