给你个例子[.NET中三层构架开发实例 - 用户注册系统]

数据库基类
using System;
using System.Data;
using System.Data.SqlClient;

namespace HaiSky.HtJob
{
    /// <summary>
    /// DbClass 的摘要说明。
    /// </summary>
    public class DbClass
    {
        private string connectionString;
        protected SqlConnection Connection;
        public DbClass(string newConnectionString)
        {
            connectionString = newConnectionString;
            Connection = new SqlConnection(connectionString);
        }
        public string ConnectionString
        {
            get
            {
                return connectionString;
            }
        }
        private SqlCommand BuildQueryCommand(string storedProcName,IDataParameter[] parameters)
        {
            SqlCommand command = new SqlCommand(storedProcName,Connection);
            command.CommandType = CommandType.StoredProcedure;
            foreach (SqlParameter parameter in parameters)
                {
                    command.Parameters.Add(parameter);
                }
            return command;
        }
        private SqlCommand BuildIntCommand(string storedProcName,IDataParameter[] parameters)
        {
            SqlCommand command = BuildQueryCommand(storedProcName,parameters);
            command.Parameters.Add(new SqlParameter("ReturnValue",SqlDbType.Int,4,
                ParameterDirection.ReturnValue,false,
                0,
                0,
                string.Empty,DataRowVersion.Default,null));
            return command;        
        }
        protected int RunProcedure(string storedProcName,IDataParameter[] parameters,out int rowsAffected)
        {
            int result;
            Connection.Open();
            SqlCommand command = BuildIntCommand(storedProcName,parameters);
            rowsAffected = command.ExecuteNonQuery();
            result = (int)command.Parameters["ReturnValue"].Value;
            Connection.Close();
            return result;
        }
        protected SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters )
        {
            SqlDataReader returnReader;

            Connection.Open();
            SqlCommand command = BuildQueryCommand( storedProcName, parameters );
            command.CommandType = CommandType.StoredProcedure;

            returnReader = command.ExecuteReader();
            return returnReader;
        }
        protected DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName )
        {
            DataSet dataSet = new DataSet();
            Connection.Open();
            SqlDataAdapter sqlDA = new SqlDataAdapter();
            sqlDA.SelectCommand = BuildQueryCommand( storedProcName, parameters );
            sqlDA.Fill( dataSet, tableName );
            Connection.Close();

            return dataSet;
        }
        protected void RunProcedure(string storedProcName, IDataParameter[] parameters, DataSet dataSet, string tableName )
        {
            Connection.Open();
            SqlDataAdapter sqlDA = new SqlDataAdapter();
            sqlDA.SelectCommand = BuildIntCommand( storedProcName, parameters );
            sqlDA.Fill( dataSet, tableName );
            Connection.Close();            
        }
    }
}

商务层基类(逻辑层)
using System;
namespace Wrox.WebModules.Business
{
    public class BizObject
    {
        public BizObject()
        {            }
    }
}

下面是用户注册系统开发的三层构架实例:数据库基类采用上面提供的代码。
1、    用户注册模块数据层开发:
using System;
using System.Data;
using System.Data.SqlClient;
using HaiSky.HtJob;
using System.Xml;
namespace HaiSky.HtJob.Accounts.AccountsData
{
    public class User : HaiSky.HtJob.HaiSkyDbObject
    {
        public User(string newConnectionString) : base(newConnectionString)
        {//直接路由连接字符串}
        public int Create(string user_nm,string user_pwd)
        {
            int rowsAffected;
            SqlParameter[] parameters = {new SqlParameter("@user_nm",SqlDbType.Char,16),
                                        new
SqlParameter("@user_pwd",SqlDbType.Char,16)};
            parameters[0].Value = user_nm;
            parameters[1].Value = user_pwd;
            parameters[2].Direction = ParameterDirection.Output;
            try
            {
                RunProcedure("IF_user_info",parameters,out rowsAffected);
            }
            catch
            {    }
            return (int)parameters[2].Value;
        }
    }
}
2、用户注册商务层开发:
using System;
using System.Configuration;
using HaiSky.HtJob.Accounts.AccountsData;
namespace HaiSky.HtJob.Accounts.AccountBusiness
{
    public class User : HaiSky.HtJob.HaiSkyBizObject
    {
        int userID;
        string userName;
        string userPwd;
        string strConn;
        public User()
        {
            strConn = ConfigurationSettings.AppSettings["strConn"];
        }
        public int Careate()
        {
            AccountsData.User dataUser = new AccountsData.User(strConn);
            userID = dataUser.Create(userName,userPwd);
            return userID;
        }
        public int UserID
        {
            get
            {
                return userID;
            }
            set
            {
                userID = value;
            }
        }
        public string UserName
        {
            get
            {
                return userName;
            }
            set
            {
                userName = value;
            }
        }
        public string UserPwd
        {
            get
            {
                return userPwd;
            }
            set
            {
                userPwd = value;
            }
        }
    }
}
3、    用户注册表示层开发:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using HaiSky.HtJob.Accounts.AccountBusiness;

namespace HaiSky.HtJob.Modules.Accounts
{
    public class Register : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.TextBox TextBox1;
        protected System.Web.UI.WebControls.TextBox TextBox2;
        protected System.Web.UI.WebControls.Table Table1;
        protected System.Web.UI.WebControls.Button Button1;

        private void Page_Load(object sender, System.EventArgs e)
        {
            Table1.Rows[0].Cells[0].Visible = false;
        }
        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }    
        private void InitializeComponent()
        {    
            this.Button1.Click += new System.EventHandler(this.Button1_Click);
            this.Load += new System.EventHandler(this.Page_Load);
        }
        #endregion
        private void Button1_Click(object sender, System.EventArgs e)
        {
            int i;
            HtJob.Accounts.AccountBusiness.User BusinessUser = new HtJob.Accounts.AccountBusiness.User();
            BusinessUser.UserName = TextBox1.Text;
            BusinessUser.UserPwd = TextBox2.Text;
            i = BusinessUser.Careate();
            Response.Write (i.ToString());                         //这里输出返回值
        }
    }
}
4、    该系统调用的存储过程:
CREATE PROCEDURE IF_user_info
(@user_nm char(16),@user_pwd char(16),@user_ID int output)
AS
    insert user_info(user_nm,user_pwd) values(@user_nm,@user_pwd)
set @user_ID = @@identity
    IF @@ERROR > 0
        BEGIN
        RAISERROR ('Insert of Article failed', 16, 1)
        RETURN 99
    END
GO

时间: 2024-11-09 02:47:40

给你个例子[.NET中三层构架开发实例 - 用户注册系统]的相关文章

.NET中三层构架开发实例-用户注册系统

用户注册 下面是用户注册系统开发的三层构架实例:数据库基类采用上面提供的代码. 1.用户注册模块数据层开发:using System;using System.Data;using System.Data.SqlClient;using HaiSky.HtJob;using System.Xml;namespace HaiSky.HtJob.Accounts.AccountsData{    public class User : HaiSky.HtJob.HaiSkyDbObject    {

国资委将建立三层构架资产运营将委托给公司

图为国务院国资委主任.党委书记李荣融.(图片来源: 新华网) 新华网北京6月29日电 新中国成立60年来,我国的政治.经济.文化等各项事业取得了巨大成就,而国有企业更是在国家繁荣.民族昌盛的历程中发挥了巨大的作用.29日下午,国务院国资委主任.党委书记李荣融与新华 网友"面对面",就国企改革发展的一系列热点问题与网友进行在线交流. 李荣融指出,未来国资委功能不变,但构架会逐步向三层构架去努力,国资委自身更多的职能将放在监督上,国有资产的运营会逐步委托给资产经营公司. [网友32020]

ASP.NET中发送Email完整实例(转)

asp.net ASP.NET中发送Email完整实例 本文举例说明在ASP.NET中发送Email的众多可能性,内容覆盖了诸如Email格式.优先权.附件及Email编码等方面. ASP.NET被赋予了一个发送Email的新对象,名为SmtpMail.使用SmtpMail对象从ASP.NET页面中发送Email时,可以遵循以下简单步骤: ▲包含与邮件有关类所需要的名称空间:▲例示一个信息对象,设置属性:▲使用SmtpMail对象实例的send方法发送邮件. 现在我们就来一步一步地研究从一个AS

php中return的用法实例分析

 这篇文章主要介绍了php中return的用法,实例分析了php中return的功能及常见的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php中return的用法.分享给大家供大家参考.具体分析如下: 首先,它的意思就是返回;return()是语言结构而不是函数,仅在参数包含表达式时才需要用括号将其括起来.当返回一个变量时通常不用括号,这样可以降低PHP的负担. 基本用法: a).return expression // 返回一个表达式结果 b).return(e

perl中使用signal(信号)实例

  这篇文章主要介绍了perl中使用signal(信号)实例,本文讲解了信号的相关知识以,并给出了perl代码实例,需要的朋友可以参考下 使用signal,能让你的程序功能更丰富.要在Linux下列出所有的signal, 利用kill -l即可. 下面是我机器上的输出(后面还有到64的没列出来): 代码如下: xuyang@xuyang-desktop:/$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABR

JS中prototype的用法实例分析

 这篇文章主要介绍了JS中prototype的用法,实例分析了JS中prototype的常见使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JS中prototype的用法.分享给大家供大家参考.具体分析如下: JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A

jQuery中ajax - get() 方法实例详解_AJAX相关

在jquery中使用get,post和ajax方法给服务器端传递数据,在上篇文章给大家分享了jquery中ajax-post()方法实例,下面通过本文继续学习jQuery中ajax - get() 方法,具体介绍请看下文. jQuery Ajax 参考手册 实例 使用 AJAX 的 GET 请求来改变 div 元素的文本: $("button").click(function(){ $.get("demo_ajax_load.txt", function(resul

ASP 中 Split 函数的实例分析_ASP基础

asp下使用split实现数组操作的方法ASP 中 Split 函数的实例 大家有碰到过要想取一字符串里的某些值而无从下手?有没有觉得看书或教材对split的写法糊里糊涂--如果有此疑问的话,请看下面我对例子的解释,相信您会对这个有一定的了解.  我先介绍一下Split函数的用法: 返回值数组 = Split("字符串","分割符") 假设变量strURL保存着URL值,如strURL = "ftp://username:password@server&q

Python中zip()函数用法实例教程_python

本文实例讲述了Python中zip()函数的定义及用法,相信对于Python初学者有一定的借鉴价值.详情如下: 一.定义: zip([iterable, ...])zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表).若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同.利用*号操作符,可以将list unzip(解压). 二.用法示例: 读者看看下面的例子,对