.net三層結(jié)構(gòu)初探分析
DBUtility--DbHelperOleDbP.cs(數(shù)據(jù)基類存儲(chǔ)過(guò)程)
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
namespace MyCms.DBUtility
{
public partial class DbHelperOleDb
{
/// <summary>
/// 執(zhí)行SQL語(yǔ)句,返回影響的記錄數(shù)
/// </summary>
public static int ExecuteSql(string strSql, params OleDbParameter[] parms)
{
using (OleDbConnection conn = new OleDbConnection(ConnectionString))
{
using (OleDbCommand cmd = new OleDbCommand())
{
try
{
PrepareCmd(cmd, conn, null, strSql, parms);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
catch (OleDbException E)
{
throw new Exception(E.Message);
}
}
}
}
/// <summary>
/// 執(zhí)行一條計(jì)算查詢結(jié)果語(yǔ)句,返回查詢結(jié)果(object)。
/// </summary>
/// <param name="SQLString">計(jì)算查詢結(jié)果語(yǔ)句</param>
/// <returns>查詢結(jié)果(object)</returns>
public static object GetSingle(string SQLString, params OleDbParameter[] cmdParms)
{
using (OleDbConnection connection = new OleDbConnection(ConnectionString))
{
using (OleDbCommand cmd = new OleDbCommand())
{
try
{
PrepareCmd(cmd, connection, null, SQLString, cmdParms);
object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (System.Data.OleDb.OleDbException e)
{
throw new Exception(e.Message);
}
}
}
}
/// <summary>
/// 執(zhí)行查詢語(yǔ)句,返回OleDbDataReader
/// </summary>
/// <param name="strSQL">查詢語(yǔ)句</param>
/// <returns>OleDbDataReader</returns>
public static OleDbDataReader ExecuteReader(string SQLString, params OleDbParameter[] cmdParms)
{
OleDbConnection connection = new OleDbConnection(ConnectionString);
OleDbCommand cmd = new OleDbCommand();
try
{
PrepareCmd(cmd, connection, null, SQLString, cmdParms);
OleDbDataReader myReader = cmd.ExecuteReader();
cmd.Parameters.Clear();
return myReader;
}
catch (System.Data.OleDb.OleDbException e)
{
throw new Exception(e.Message);
}
}
/// <summary>
/// 執(zhí)行查詢語(yǔ)句,返回DataSet
/// </summary>
/// <param name="SQLString">查詢語(yǔ)句</param>
/// <returns>DataSet</returns>
public static DataSet Query(string SQLString, params OleDbParameter[] cmdParms)
{
using (OleDbConnection connection = new OleDbConnection(ConnectionString))
{
OleDbCommand cmd = new OleDbCommand();
PrepareCmd(cmd, connection, null, SQLString, cmdParms);
using (OleDbDataAdapter da = new OleDbDataAdapter(cmd))
{
DataSet ds = new DataSet();
try
{
da.Fill(ds, "ds");
cmd.Parameters.Clear();
}
catch (System.Data.OleDb.OleDbException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
}
///添加存儲(chǔ)過(guò)程參數(shù)
private static void PrepareCmd(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, string cmdText, OleDbParameter[] cmdParms)
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
{
cmd.Transaction = trans;
}
cmd.CommandType = CommandType.Text;
if (cmdParms != null)
{
foreach (OleDbParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}
/// <summary>
/// 執(zhí)行多條SQL語(yǔ)句,實(shí)現(xiàn)數(shù)據(jù)庫(kù)事務(wù)。
/// </summary>
/// <param name="SQLStringList">SQL語(yǔ)句的哈希表(key為sql語(yǔ)句,value是該語(yǔ)句的OleDbParameter[])</param>
public static void ExecuteSqlTran(Hashtable SQLStringList)
{
using (OleDbConnection conn = new OleDbConnection(ConnectionString))
{
conn.Open();
using (OleDbTransaction trans = conn.BeginTransaction())
{
OleDbCommand cmd = new OleDbCommand();
try
{
//循環(huán)
foreach (DictionaryEntry myDE in SQLStringList)
{
string cmdText = myDE.Key.ToString();
OleDbParameter[] cmdParms = (OleDbParameter[])myDE.Value;
PrepareCmd(cmd, conn, trans, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
trans.Commit();
}
}
catch
{
trans.Rollback();
throw;
}
}
}
}
}
}
DBUtility--DbHelperOleDbS.cs(數(shù)據(jù)基類具體實(shí)現(xiàn)) 折疊展開(kāi)C#復(fù)制代碼
using System;
using System.Data;
using System.Data.OleDb;
using System.Text;
namespace MyCms.DBUtility
{
public partial class DbHelperOleDb
{
//根據(jù)條件判斷是否存在
public static bool Exists(string strSql, params OleDbParameter[] parms)
{
object obj = DbHelperOleDb.GetSingle(strSql, parms);
int result;
if ((Equals(obj, null)) || (Equals(obj, DBNull.Value)))
{
result = 0;
}
else
{
result = int.Parse(obj.ToString());
}
if (result == 0)
{
return false;
}
else
{
return true;
}
}
}
}
DAL--admin.cs 折疊展開(kāi)C#復(fù)制代碼
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using MyCms.DBUtility;
namespace MyCms.DAL
{
public class admin
{
public admin()
{
}
/// <summary>
/// 是否存在該記錄
/// </summary>
public bool Exists(string sname)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select count(1) from admin");
strSql.Append(" where sname = @sname");
OleDbParameter[] parameters = {
new OleDbParameter("@sname",OleDbType.VarChar,50)};
parameters[0].Value = sname;
return DbHelperOleDb.Exists(strSql.ToString(), parameters);
}
/// <summary>
/// 增加一條記錄
/// </summary>
public void Add(MyCms.MODEL.admin model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into admin(");
strSql.Append("sname,spassword)");
strSql.Append(" values (");
strSql.Append("@sname,@spassword)");
OleDbParameter[] parameters = {
new OleDbParameter("@sname", OleDbType.VarChar,50),
new OleDbParameter("@spassword", OleDbType.VarChar,50)};
parameters[0].Value = model.sname;
parameters[1].Value = model.spassword;
DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);
}
/// <summary>
/// 更新一條數(shù)據(jù)
/// </summary>
public void Update(MyCms.MODEL.admin model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("update admin set ");
strSql.Append("sname=@sname,");
strSql.Append("spassword=@spassword");
strSql.Append(" where sname=@sname and spassword=@spassword ");
OleDbParameter[] parameters = {
new OleDbParameter("@sname", OleDbType.VarChar,50),
new OleDbParameter("@spassword", OleDbType.VarChar,50)};
parameters[0].Value = model.sname;
parameters[1].Value = model.spassword;
DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);
}
/// <summary>
/// 刪除一條數(shù)據(jù)
/// </summary>
public void Delete(int id)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("delete from admin ");
strSql.Append(" where id=@id ");
OleDbParameter[] parameters = {
new OleDbParameter("@id", OleDbType.Integer,4)};
parameters[0].Value = id;
DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);
}
/// 獲取數(shù)據(jù)列表
public DataSet GetList(string strWhere)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select id,sname,spassword from admin ");
if (strWhere.Trim() != "")
{
strSql.Append(" where " + strWhere);
}
return DbHelperOleDb.Query(strSql.ToString());
}
}
}
BLL--admin.cs 折疊展開(kāi)C#復(fù)制代碼
using System;
using System.Data;
namespace MyCms.BLL
{
public class admin
{
private readonly MyCms.DAL.admin dal = new MyCms.DAL.admin();
public admin() { }
/// <summary>
/// 是否存在該記錄
/// </summary>
public bool Exists(string sname)
{
return dal.Exists(sname);
}
/// <summary>
/// 增加一條記錄
/// </summary>
public void Add(MyCms.MODEL.admin model)
{
dal.Add(model);
}
/// <summary>
/// 更新一條記錄
/// </summary>
public void Update(MyCms.MODEL.admin model)
{
dal.Update(model);
}
/// <summary>
/// 刪除一條記錄
/// </summary>
public void Delete(int id)
{
dal.Delete(id);
}
/// <summary>
/// 獲取數(shù)據(jù)列表
/// </summary>
public DataSet GetList(string strWhere)
{
return dal.GetList(strWhere);
}
/// <summary>
/// 獲得數(shù)據(jù)列表
/// </summary>
public DataSet GetAllList()
{
return GetList("");
}
}
}
MODEL--admin.cs 折疊展開(kāi)C#復(fù)制代碼
using System;
using System.Collections.Generic;
using System.Text;
namespace MyCms.MODEL
{
public class admin
{
private int? _id;
private string _sname;
private string _spassword;
public int? id
{
set { _id = value; }
get { return _id; }
}
public string sname
{
set { _sname = value; }
get { return _sname; }
}
public string spassword
{
set { _spassword = value; }
get { return _spassword; }
}
}
}
default.aspx 折疊展開(kāi)XML/HTML復(fù)制代碼
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WEB._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>無(wú)標(biāo)題頁(yè)</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td height="25" width="30%" align="right">
姓名 </td>
<td height="25" width="*" align="left">
<asp:TextBox id="txtsname" runat="server" Width="200px"></asp:TextBox>
</td></tr>
<tr>
<td height="25" width="30%" align="right">
密碼 </td>
<td height="25" width="*" align="left">
<asp:TextBox id="txtspassword" runat="server" Width="200px"></asp:TextBox>
</td></tr>
<tr>
<td height="25" colspan="2"><div align="center">
<asp:Button ID="btnAdd" runat="server" Text="· 提交 ·" OnClick="btnAdd_Click" />
</div></td></tr>
</table>
</div>
<br />
數(shù)據(jù)顯示:
<asp:Repeater ID="rptAdmin" runat="server">
<HeaderTemplate>
<table border="1">
<tr><th>ID</th><th>帳戶</th><th>密碼</th></tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("id") %></td>
<td><%#Eval("sname") %></td>
<td><%#Eval("spassword") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
default.aspx.cs 折疊展開(kāi)C#復(fù)制代碼
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using MyCms.BLL;
using MyCms.MODEL;
///阿會(huì)楠的練習(xí) sosuo8.com
namespace WEB
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
bind();
}
/// 添加記錄
protected void btnAdd_Click(object sender, EventArgs e)
{
string sname = this.txtsname.Text;
string spassword = this.txtspassword.Text;
MyCms.MODEL.admin model = new MyCms.MODEL.admin();
model.sname = sname;
model.spassword = spassword;
MyCms.BLL.admin bll = new MyCms.BLL.admin();
bll.Add(model);
bind();
}
/// 綁定數(shù)據(jù)
protected void bind()
{
MyCms.BLL.admin admin = new MyCms.BLL.admin();
this.rptAdmin.DataSource = admin.GetAllList();
this.rptAdmin.DataBind();
}
}
}
注明:大部分代碼都來(lái)自“動(dòng)軟.Net代碼生成器”

相關(guān)文章
ASP.Net 請(qǐng)求響應(yīng)流程簡(jiǎn)述
ASP.Net 請(qǐng)求響應(yīng)流程簡(jiǎn)述,需要的朋友可以參考下。2012-01-01asp.net使用WebAPI和EF框架結(jié)合實(shí)現(xiàn)數(shù)據(jù)的基本操作
這篇文章介紹了asp.net使用WebAPI和EF框架結(jié)合實(shí)現(xiàn)數(shù)據(jù)基本操作的案例,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04asp.net 數(shù)據(jù)庫(kù)連接類代碼(SQL)
asp.net數(shù)據(jù)庫(kù)連接類(SQL) 代碼,需要的朋友可以參考下。2010-03-03TreeView創(chuàng)建IHierarchicalDataSource類型的數(shù)據(jù)源實(shí)現(xiàn)
為T(mén)reeView創(chuàng)建IHierarchicalDataSource類型的數(shù)據(jù)源實(shí)現(xiàn)2009-01-01關(guān)于Asp.net頁(yè)面Page_Load被執(zhí)行兩次的問(wèn)題分享
這篇文章介紹了關(guān)于Asp.net頁(yè)面Page_Load被執(zhí)行兩次的問(wèn)題,有需要的朋友可以參考一下2013-09-09System.Web.Routing入門(mén)及進(jìn)階
上面介紹的是最簡(jiǎn)單的一種定義方式。當(dāng)然我們可以建立更復(fù)雜的規(guī)則。其中就包括設(shè)定規(guī)則的默認(rèn)值以及設(shè)定規(guī)則的正則表達(dá)式2011-12-12Ajax實(shí)現(xiàn)評(píng)論中頂和踩功能的實(shí)例代碼
這算是社團(tuán)布置的一個(gè)假期小作業(yè)吧,我只是提出我自己的解決方案,不一定是最合適的。2013-04-04ASP.NET2.0緩存(Cache)技術(shù)深入理解
緩存技術(shù)是ASP.NET2.0非常重要的一個(gè)特性,它提供了一種非常好的本地?cái)?shù)據(jù)緩存機(jī)制,從而有效的提高數(shù)據(jù)訪問(wèn)的性能2012-11-11