.net三层结构初探分析
更新时间:2008年09月08日 20:42:54 作者:
最近开始对架构开始了研究,当然由于水平不够,先研究了“简单的三层结构”,至于“抽象工厂模式”放后面来研究吧!
DBUtility--DbHelperOleDbP.cs(数据基类存储过程)
复制代码 代码如下:
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>
/// 执行SQL语句,返回影响的记录数
/// </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>
/// 执行一条计算查询结果语句,返回查询结果(object)。
/// </summary>
/// <param name="SQLString">计算查询结果语句</param>
/// <returns>查询结果(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>
/// 执行查询语句,返回OleDbDataReader
/// </summary>
/// <param name="strSQL">查询语句</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>
/// 执行查询语句,返回DataSet
/// </summary>
/// <param name="SQLString">查询语句</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;
}
}
}
///添加存储过程参数
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>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的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
{
//循环
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(数据基类具体实现) 折叠展开C#复制代码
using System;
using System.Data;
using System.Data.OleDb;
using System.Text;
namespace MyCms.DBUtility
{
public partial class DbHelperOleDb
{
//根据条件判断是否存在
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 折叠展开C#复制代码
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>
/// 更新一条数据
/// </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>
/// 删除一条数据
/// </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);
}
/// 获取数据列表
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 折叠展开C#复制代码
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>
/// 获取数据列表
/// </summary>
public DataSet GetList(string strWhere)
{
return dal.GetList(strWhere);
}
/// <summary>
/// 获得数据列表
/// </summary>
public DataSet GetAllList()
{
return GetList("");
}
}
}
MODEL--admin.cs 折叠展开C#复制代码
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 折叠展开XML/HTML复制代码
<%@ 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>无标题页</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 />
数据显示:
<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 折叠展开C#复制代码
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;
///阿会楠的练习 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();
}
/// 绑定数据
protected void bind()
{
MyCms.BLL.admin admin = new MyCms.BLL.admin();
this.rptAdmin.DataSource = admin.GetAllList();
this.rptAdmin.DataBind();
}
}
}
注明:大部分代码都来自“动软.Net代码生成器”
net_sancen.rar
相关文章
ASP.NET Core MVC中Form Tag Helpers用法介绍
这篇文章介绍了ASP.NET Core MVC中Form Tag Helpers的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-02-02
asp.net Web Services上传和下载文件(完整代码)
随着Internet技术的发展和跨平台需求的日益增加,Web Services的应用越来越广,我们不但需要通过Web Services传递字符串信息,而且需要传递二进制文件信息。2008-12-12
使用.NET 6开发TodoList应用之领域实体创建原理和思路
虽然TodoList是一个很简单的应用,业务逻辑并不复杂,至少在这个系列文章中我并不想使其过度复杂,接下来通过本文给大家介绍使用.NET 6开发TodoList应用之领域实体创建思路及原理,需要的朋友可以参考下2021-12-12
asp.net下使用jQuery.AutoComplete完成仿淘宝商品搜索自动完成功能(改进了键盘上下选择体验)
其实这个已经是个比较常见的功能了,网上也有很多人做过这个了,但是很多都是仅仅做了一些基本的网页上自动完成功能,没有与具体的数据库进行联动,我今天所介绍这个自动完成的就是我修改的jQuery.AutoComplete+数据库的一个解决方案。2010-05-05


最新评论