日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用objectdatasource结合数据绑定控件进行简单三层架构的开发

發布時間:2025/7/14 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用objectdatasource结合数据绑定控件进行简单三层架构的开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對于B/S架構的三層架構的開發,可能很多的人都已經了解的是比較清楚的。哪么我在這里用的是最簡單的三層架構。ui+bll+dal+dbsqlhelp+model.


從05出來以后由于功能明顯比03夸張了很多,所以在開發的時候也就很方便。其中以數據的顯示最為明顯。通過sqldatasource可以幾乎一行代碼都不需要寫,就能在GridView中顯示出來數據,并且進行增刪查改的操作,但是我個人總感覺這樣做是有問題的。因為使用sqldatasource,就明顯的破壞了3層架構的基本改變。哪么微軟在05當中,很重點的推出了objectdatasource這個東西,就是專門用來結合三層架構開發的一個數據源綁定控件。?在層次之間傳遞的也是object,這樣相對來說就比較好一些。

代碼在具體的下邊,其實主要就是DataList稍微麻煩一點,別的幾個控件都可以自動 實現增刪查改的功能,所以基本沒什么寫太多的代碼。!

在這里主要是DataList的代碼,以操作Jobs表為示例。

DbSqlHelp

using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Data;
using?System.Data.SqlClient;
namespace?DbSqlHelp
{
????
public?abstract?class?DbSqlHelp
????{
????????
static?string?StrConn?=?@"User?ID=sa;Password=perishryu;Initial?Catalog=pubs;Data?Source=OATHRYUSQL2005";
????????
static?SqlDataAdapter?da;
????????
static?SqlCommand?cmd;
????????
static?SqlConnection?conn;
????????
static?DataSet?ds;

????????
public?static??DataSet?Search(string?sql)
????????{
????????????
using?(da?=?new?SqlDataAdapter(sql,?StrConn))
????????????{
????????????????
using?(ds?=?new?DataSet())
????????????????{
????????????????????da.Fill(ds);
????????????????????
return?ds;
????????????????}
????????????}
????????}
????????
public?static?bool?Make(string?sql)
????????{
????????????
using?(conn?=?new?SqlConnection(StrConn))
????????????{
????????????????
using?(cmd?=?new?SqlCommand(sql,?conn))
????????????????{
????????????????????
if?(conn.State?!=?ConnectionState.Closed)
????????????????????{
????????????????????????conn.Close();
????????????????????}
????????????????????
try
????????????????????{
????????????????????????conn.Open();
????????????????????????cmd.ExecuteNonQuery();
????????????????????????
return?false;
????????????????????}
????????????????????
catch(System.Exception?ex)
????????????????????{
????????????????????????
throw?ex;
????????????????????}
????????????????????
finally
????????????????????{
????????????????????????conn.Close();
????????????????????}
????????????????}
????????????}
????????}
????}
}

Model

using?System;
using?System.Collections.Generic;
using?System.Text;

namespace?Model
{
????
public?class?Job_Model
????{
????????
public?Job_Model()
????????{
????????}
????????
public?Job_Model(int?id,?string?desc,?int?min,?int?max)
????????{
????????????
this.job_desc?=?desc;
????????????
this.job_id?=?id;
????????????
this.min_lvl?=?min;
????????????
this.max_lvl?=?max;
????????}
????????
int?job_id;

????????
public?int?Job_id
????????{
????????????
get?{?return?job_id;?}
????????????
set?{?job_id?=?value;?}
????????}
????????
string?job_desc;

????????
public?string?Job_desc
????????{
????????????
get?{?return?job_desc;?}
????????????
set?{?job_desc?=?value;?}
????????}
????????
int?min_lvl;

????????
public?int?Min_lvl
????????{
????????????
get?{?return?min_lvl;?}
????????????
set?{?min_lvl?=?value;?}
????????}
????????
int?max_lvl;

????????
public?int?Max_lvl
????????{
????????????
get?{?return?max_lvl;?}
????????????
set?{?max_lvl?=?value;?}
????????}
????}
}
DAL

using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Data;
namespace?DAL
{
????
public?class?Job_DAL
????{
????????
string?sql;
????????
public?DataSet?Select_Job_Dal(string?jobid)
????????{
????????????sql?
=?"select?*?from?jobs?where?job_id='"?+jobid?+?"'";
????????????
return?DbSqlHelp.DbSqlHelp.Search(sql);

????????}
????????
public?DataSet?Select_Job_Dal()
????????{
????????????sql?
=?"select?*?from?jobs";
????????????
return?DbSqlHelp.DbSqlHelp.Search(sql);
????????}

????????
public?bool?Update_Job_Dal(Model.Job_Model?job)
????????{
????????????sql?
=?"update?jobs?set?job_desc='"?+?job.Job_desc?+?"',min_lvl='"?+?job.Min_lvl?+?"',max_lvl='"?+?job.Max_lvl?+?"'?where?job_id='"?+?job.Job_id?+?"'";
????????????
try
????????????{
????????????????
return?DbSqlHelp.DbSqlHelp.Make(sql);
????????????}
????????????
catch(System.Exception?ex)
????????????{
????????????????
throw?ex;
????????????}
????????}
????????
public?bool?Insert_Job_Dal(Model.Job_Model?job)
????????{
????????????sql?
=?"insert?into?jobs?values('"?+?job.Job_desc?+?"','"?+?job.Min_lvl?+?"','"?+?job.Max_lvl?+?"')";
????????????
try
????????????{
????????????????
return?DbSqlHelp.DbSqlHelp.Make(sql);
????????????}
????????????
catch?(System.Exception?ex)
????????????{
????????????????
throw?ex;
????????????}
????????????
????????}
????????
public?bool?Delete_Job_Dal(Model.Job_Model?job)
????????{
????????????sql?
=?"delete?from?jobs?where?job_id='"?+?job.Job_id?+?"'";
????????????
try
????????????{
????????????????
return?DbSqlHelp.DbSqlHelp.Make(sql);
????????????}
????????????
catch?(System.Exception?ex)
????????????{
????????????????
throw?ex;
????????????}
????????????
????????}
????}
}



BLL

using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Data;
namespace?BLL
{
????
public?class?Job_BLL
????{
????????DAL.Job_DAL?jobdal;
????????
public?DataSet?Select_BLL()
????????{
????????????jobdal?
=?new?DAL.Job_DAL();
????????????{
????????????????
return?jobdal.Select_Job_Dal();
????????????}
????????}
????????
public?DataSet?Select_BLL(string?jobid)
????????{
????????????jobdal?
=?new?DAL.Job_DAL();
????????????{
????????????????
return?jobdal.Select_Job_Dal(jobid);
????????????}

????????}
????????
public?bool?Update_BLL(Model.Job_Model?job)
????????{
????????????jobdal?
=?new?DAL.Job_DAL();
????????????
try
????????????{
????????????????
return?jobdal.Update_Job_Dal(job);
????????????}
????????????
catch?(System.Exception?ex)
????????????{
????????????????
throw?ex;
????????????}
????????}
????????
public?bool?Insert_BLL(Model.Job_Model?job)
????????{
????????????jobdal?
=?new?DAL.Job_DAL();
????????????
try
????????????{
????????????????
return?jobdal.Insert_Job_Dal(job);
????????????}
????????????
catch(System.Exception?ex)
????????????{
????????????????
throw?ex;
????????????}
????????}
????????
public?bool?Delete_BLL(Model.Job_Model?job)
????????{
????????????jobdal?
=?new?DAL.Job_DAL();
????????????
try
????????????{
????????????????
return?jobdal.Delete_Job_Dal(job);
????????????}
????????????
catch(System.Exception?ex)
????????????{
????????????????
throw?ex;
????????????}
????????}
????}
}


UI?? aspx頁面

<%@?Page?Language="C#"?AutoEventWireup="true"?CodeFile="DataListDemo.aspx.cs"?Inherits="DataListDemo"?%>

<!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>
????????
<asp:DataList?ID="DataList1"?runat="server"?DataSourceID="ObjectDataSource1"?RepeatColumns="4"?RepeatDirection="Horizontal"?Width="720px"?DataKeyField="job_id"?OnCancelCommand="DataList1_CancelCommand"?OnEditCommand="DataList1_EditCommand"?OnUpdateCommand="DataList1_UpdateCommand"?OnDeleteCommand="DataList1_DeleteCommand">
????????????
<ItemTemplate>
????????????????job_id:
<asp:Literal?ID="Literal1"?runat="server"?Text='<%#Eval("job_id")?%>'></asp:Literal><br?/>
????????????????job_desc:
<asp:Literal?ID="Literal2"?runat="server"?Text='<%#Eval("job_desc")?%>'></asp:Literal><br?/>
????????????????min_lvl:
<asp:Literal?ID="Literal3"?runat="server"?Text='<%#Eval("min_lvl")?%>'></asp:Literal><br?/>
????????????????max_lvl:
<asp:Literal?ID="Literal4"?runat="server"?Text='<%#Eval("max_lvl")?%>'></asp:Literal><br?/>
????????????????
<asp:LinkButton?ID="LinkButton1"?runat="server"?CommandName="Edit">編輯</asp:LinkButton>&nbsp;&nbsp;&nbsp;&nbsp;
????????????????
<asp:LinkButton?ID="LinkButton2"?runat="server"?CommandName="delete">刪除</asp:LinkButton>
????????????
</ItemTemplate>
????????????
<EditItemTemplate>
????????????????job_id:
<asp:Literal?ID="Literal1"?runat="server"?Text='<%#Eval("job_id")?%>'></asp:Literal><br?/>
????????????????job_desc:
<asp:TextBox?ID="TextBox1"?runat="server"?Text='<%#Bind("job_desc")?%>'></asp:TextBox><br?/>
????????????????min_lvl:
<asp:TextBox?ID="TextBox2"?runat="server"?Text='<%#Bind("min_lvl")?%>'></asp:TextBox><br?/>
????????????????max_lvl:
<asp:TextBox?ID="TextBox3"?runat="server"?Text='<%#Bind("max_lvl")?%>'></asp:TextBox><br?/>
????????????????
<asp:LinkButton?ID="LinkButton3"?runat="server"?CommandName="update">更新</asp:LinkButton>
????????????????
<asp:LinkButton?ID="LinkButton4"?runat="server"?CommandName="cancel">取消</asp:LinkButton>
????????????
</EditItemTemplate>
???????????
????????
</asp:DataList><asp:ObjectDataSource?ID="ObjectDataSource1"?runat="server"?DataObjectTypeName="Model.Job_Model"
????????????DeleteMethod
="Delete_BLL"?InsertMethod="Insert_BLL"?SelectMethod="Select_BLL"
????????????TypeName
="BLL.Job_BLL"?UpdateMethod="Update_BLL"?OnUpdating="ObjectDataSource1_Updating"?OnDeleting="ObjectDataSource1_Deleting"?OnUpdated="ObjectDataSource1_Updated"></asp:ObjectDataSource>
????????
<asp:Label?ID="Label1"?runat="server"?Text="Label"?Width="280px"></asp:Label>
????????
&nbsp;&nbsp;
????
</div>
????
</form>
</body>
</html>


UI?? CS代碼

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?System.ComponentModel;

public?partial?class?DataListDemo?:?System.Web.UI.Page
{
????
protected?void?Page_Load(object?sender,?EventArgs?e)
????{
????}
????
protected?void?DataList1_EditCommand(object?source,?DataListCommandEventArgs?e)
????{
????????
this.DataList1.EditItemIndex?=?e.Item.ItemIndex;
????????DataBind();
????}
????
protected?void?DataList1_CancelCommand(object?source,?DataListCommandEventArgs?e)
????{
????????
this.DataList1.EditItemIndex?=?-1;
????????DataBind();
????}
????
protected?void?ObjectDataSource1_Updating(object?sender,?ObjectDataSourceMethodEventArgs?e)
????{
????????((Model.Job_Model)(e.InputParameters[
0])).Job_id?=?job.Job_id;
????????((Model.Job_Model)(e.InputParameters[
0])).Job_desc?=?job.Job_desc;
????????((Model.Job_Model)(e.InputParameters[
0])).Min_lvl?=?job.Min_lvl;
????????((Model.Job_Model)(e.InputParameters[
0])).Max_lvl?=?job.Max_lvl;
????????
this.DataList1.EditItemIndex?=?-1;
????????DataBind();
????}
????Model.Job_Model?job;
????
protected?void?DataList1_UpdateCommand(object?source,?DataListCommandEventArgs?e)
????{
????????job?
=?new?Model.Job_Model();
????????job.Job_id?
=?Convert.ToInt32(((Literal)(this.DataList1.Items[e.Item.ItemIndex].FindControl("Literal1"))).Text);
????????job.Job_desc?
=?((TextBox)(this.DataList1.Items[e.Item.ItemIndex].FindControl("TextBox1"))).Text;
????????job.Min_lvl?
=?Convert.ToInt32(((TextBox)(this.DataList1.Items[e.Item.ItemIndex].FindControl("TextBox2"))).Text);
????????job.Max_lvl?
=?Convert.ToInt32(((TextBox)(this.DataList1.Items[e.Item.ItemIndex].FindControl("TextBox3"))).Text);
????????ObjectDataSource1.Update();

????}
????
protected?void?DataList1_DeleteCommand(object?source,?DataListCommandEventArgs?e)
????{
????????job?
=?new?Model.Job_Model();
????????job.Job_id?
=?Convert.ToInt32(((Literal)(this.DataList1.Items[e.Item.ItemIndex].FindControl("Literal1"))).Text);
????????ObjectDataSource1.Delete();


????}
????
protected?void?ObjectDataSource1_Deleting(object?sender,?ObjectDataSourceMethodEventArgs?e)
????{
????????((Model.Job_Model)(e.InputParameters[
0])).Job_id?=?job.Job_id;
????????DataBind();
????}
????
protected?void?ObjectDataSource1_Updated(object?sender,?ObjectDataSourceStatusEventArgs?e)
????{
????????
if?(e.Exception?!=?null)
????????{
????????????e.ExceptionHandled?
=?true;
????????????
this.Label1.Text?=?e.Exception.Message;
????????}
????}
}


其他的數據綁定控件(DetailsView,FormView,GridView),代碼大同小異,他們都可以自動完成增刪改查的功能,所以再這里就不寫了。如果有朋友有更好的辦法或者建議,可以留言交流一下。 可以留下EMAIL。

轉載于:https://www.cnblogs.com/mFrog/archive/2008/04/18/1160521.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的使用objectdatasource结合数据绑定控件进行简单三层架构的开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。