给你个例子[.NET中三层构架开发实例

发布时间: 2007-05-21 09:46    作者: 未知    来源: 未知    浏览:    评论

数据库基类
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
Smile Big Smile Surprise Stick out tongue Wink Sad Tongue Tied Indifferent Crying Embarrassed Cool Angry Angel Devil [8-|] [:#] [:-*] [:^)] [<:o)] [|-)] Yes Beer Left Hug Music Star Time Snail Pizza Automobile Umbrella Computer Storm [mo] [8o|] [^o)] [+o(] [*-)] [8-)] Coffee No Drinks [Z] Right Hug Cake Broken Heart Gift Wilted Flower Movie Dog Idea Sleep Email Travel Paradise
呢称:

加粗 斜体 下划线 链接 图片 代码 邮件地址 引用 列表

最多只能输入100个字符

Tags

SQL 数据库 asp.net C# XML 控件 .NET教程 程序 事件 数据 安全 代码 Server 客户端 验证 数据库专栏 接口 文件 Oracle DataSet 函数 DataGrid 问题 .net return C#语言 JavaScript 服务 IIS 对象 语句 windows 继承 时间 web.config 设计 开发 参数 变量 解决 字符 ADO.net 环境 VB.Net语言 web 异常 工具 服务器 计算 实例 OLEDB Application VB Word WebService insert asp net 安装 记录

精华推荐

更多

精品下载

更多