CSDN-CSDN社区-.NET技术-ASP.NET

收藏 求一个标准三层架构的例子[问题点数:30,结帖人:jianlanzq]

  • jianlanzq
  • (jianlanzq)
  • 等 级:
  • 结帖率:
楼主发表于:2008-10-13 15:26:31
页面上有个textbox,还有一个button.

点击button,将textbox的值insert到数据库里.

现在我是这么写的,

界面:
protected void Ibtn_SelectClient_Click(object sender, ImageClickEventArgs e)
{
    dll_XXX.insert(textbox1.text);
}
数据层:
public static void insert(string s)
(
    string sql="insert into xx values('"+ s +"')";
}

我很郁闷业务层干嘛去了。

当然,这里代码简化了,参数有好多。
请高人指点我该怎么写才标准
回复次数:9
  • yfqvip用户头像
  • yfqvip
  • (当爱已成往事)
  • 等 级:
#1楼 得分:0回复于:2008-10-13 15:30:46
业务层是处理业务逻辑的.
#2楼 得分:0回复于:2008-10-13 15:31:57
1L,麻烦给出例子。

我笨,不理解专业术语
#3楼 得分:0回复于:2008-10-13 15:33:04
看PetShop4.0
#4楼 得分:0回复于:2008-10-13 15:35:02
例子例子,我要例子
#5楼 得分:30回复于:2008-10-13 15:36:31
#6楼 得分:0回复于:2008-10-13 15:36:41
你要三层干嘛?明白啥意思吗?

想要标准的可以参考petshop,就是比较难
#7楼 得分:0回复于:2008-10-13 15:41:04
简单的问题复杂化
#8楼 得分:0回复于:2008-10-13 15:43:14
給一個例子吧,比如Login
C# code
using System; using CommonPrj; namespace MainPage { public class EntityLogin : EntityBase { private string m_strUserID; // ユーザID private string m_strPassword; // パスワード ///-------------------------------------------------------------------------- /// 機能 :ユーザID取得 /// /// 戻り値 :UserID - ユーザID /// /// 引き数 :value - 値 /// /// 作成日 :2008年6月13日 /// /// 作成者 : /// /// 機能説明 :ユーザID取得 /// /// 注意事項 :なし /// ///-------------------------------------------------------------------------- public string UserID { get { return m_strUserID; } set { m_strUserID = value; } } ///-------------------------------------------------------------------------- /// 機能 :パスワード取得 /// /// 戻り値 :Password - パスワード /// /// 引き数 :value - 値 /// /// 作成日 :2008年6月13日 /// /// 作成者 : /// /// 機能説明 :パスワード取得 /// /// 注意事項 :なし /// ///-------------------------------------------------------------------------- public string Password { get { return m_strPassword; } set { m_strPassword = value; } } } }

上面這個類負責把頁面寫入的信息封裝,傳入業務邏輯類BCLogin,代碼如下
C# code
using System; using MySql.Data.MySqlClient; using CommonPrj; namespace MainPage { public class BCLogin { ///-------------------------------------------------------------------------- /// 機能 :ユーザ接続チェック /// /// 戻り値 :成功登録したのユーザ名と権限情報 /// /// 引き数 :p_objEntity - 情報 /// /// 作成日 :2008年6月13日 /// /// 作成者 : /// /// 機能説明 :ユーザ接続チェック /// /// 注意事項 :なし /// ///-------------------------------------------------------------------------- public EntityLogin LoginCheck(EntityLogin p_objEntity) { try { DBAccess objDac = new DBAccess(); // DBAccess対象 // SQL構成 String strSql = "SELECT " + "USER_NAME, " + // ユーザ名 "USER_LEVAL_BARET, " + // BaRet実行権限 "USER_LEVAL_IMPORT, " + // DBインプット権限 "USER_LEVAL_MASTER, " + // プロパティマスタ権限 "USER_LEVAL_USERMANAGE, " + // ユーザ管理権限 "USER_LEVAL_STEPFLOW, " + // StepFlow実行権限 "USER_LEVAL_FILEMANAGER " + // 一時ファイル削除権限 "FROM " + "TBL_USER " + // 「TBL_USER」表 "WHERE " + "USER_ID = '" + // ユーザID p_objEntity.UserID + "' " + "AND " + "BINARY " + "USER_PASSWORD = '" + // パスワード p_objEntity.Password + "'"; // SQL実施、Data件数に取得 p_objEntity.DataArea = objDac.ExecuteDataSet(strSql); // ユーザ接続チェック if (p_objEntity.DataArea.Tables[0].Rows.Count == 0) { p_objEntity.ErrorFlg = CommonConst.C_ErrorFlg; p_objEntity.ErrorID = "EM_LOGIN_003"; } // 戻り値 return p_objEntity; } // システムエラー catch (Exception ex) { throw ex; } } } }


在頁面的按鈕Click事件中,代碼如下
C# code
protected void btnLogin_Click(object sender, EventArgs e) { try { BCLogin objLogin = new BCLogin();         // ログインBC LoginSession objSession = new LoginSession();    // セッションEntity EntityLogin objEntity = new EntityLogin();    // ログインEntity // ユーザID入力チェック if (string.IsNullOrEmpty(txtUserID.Text)) { lblErrorMsg.Text = MessageRead.GetMessage("EM_LOGIN_001"); // フォーカスの設定 txtUserID.Focus(); return; } // ユーザID大文字転換 objEntity.UserID = txtUserID.Text.ToUpper(); // パスワードチェック if (string.IsNullOrEmpty(txtPassword.Text)) { lblErrorMsg.Text = MessageRead.GetMessage("EM_LOGIN_002"); // フォーカスの設定 txtPassword.Focus(); return; } // パスワード objEntity.Password = txtPassword.Text; // ユーザ接続チェック objLogin.LoginCheck(objEntity); // エラー判定 if (objEntity.ErrorFlg.Equals(CommonConst.C_ErrorFlg)) { lblErrorMsg.Text = MessageRead.GetMessage(objEntity.ErrorID); // フォーカスの設定 txtUserID.Focus(); return; } // ユーザID objSession.UserID = objEntity.UserID; // ユーザ名 objSession.UserName = objEntity.DataArea.Tables[0].Rows[0]["USER_NAME"].ToString(); // BaRet実行権限 objSession.BaRet = objEntity.DataArea.Tables[0].Rows[0]["USER_LEVAL_BARET"].ToString(); // DBインプット権限 objSession.DBImport = objEntity.DataArea.Tables[0].Rows[0]["USER_LEVAL_IMPORT"].ToString(); // プロパティマスタ権限 objSession.UserMaster = objEntity.DataArea.Tables[0].Rows[0]["USER_LEVAL_MASTER"].ToString(); // ユーザ管理権限 objSession.UserManage = objEntity.DataArea.Tables[0].Rows[0]["USER_LEVAL_USERMANAGE"].ToString(); // ユーザアドレス objSession.Adress = Request.UserHostAddress; // StepF/L実行権限 objSession.StepFlow= objEntity.DataArea.Tables[0].Rows[0]["USER_LEVAL_STEPFLOW"].ToString(); // 一時ファイル削除権限 objSession.TempFileDelete= objEntity.DataArea.Tables[0].Rows[0]["USER_LEVAL_FILEMANAGER"].ToString(); // セッション値の設定 Session["objSession"] = objSession; // メインメニュー画面に遷移する Response.Redirect("MainPage/MainMenu.aspx"); } // スレッド異常終了エラー catch (ThreadAbortException) { } // システムエラー catch (Exception ex) { // システムエラー画面に遷移する SystemErrorSrc("EM_LOGIN_005", ex.Message); } }


自己看看能不能領會,BCLogin就是業務邏輯層
  • jietuan用户头像
  • jietuan
  • (请访问我的博客,我的淘宝)
  • 等 级:
#9楼 得分:0回复于:2008-10-13 15:46:19
引用 6 楼 lovehongyun 的回复:
你要三层干嘛?明白啥意思吗?

想要标准的可以参考petshop,就是比较难


没有必要用三层而用三层,其实也无层的目的就是代码重用和业务代码抽象出来;让表示层更简单,比如你的Insertxxx方法,里面会包含sql 语句,你就可以把它放到业务层
相关问题
求delphi +ado 三层架构例子!
哪位朋友VB三层架构的例子,贴出来大家交流交流呀! VB / 控件- CSDN ...
关于三层架构,我一直想不明白。向高手请教!! C++ Builder / 数据库 ...
求vb的三层例子!! Web 开发/ ASP - CSDN社区community.csdn.net
标准三层架构asp.net + SQL2000数据库办公自动化源码(C#开发)分享 ...
求一个简单的,只有增删改查功能的,三层架构的JSP+sql实例