日韩性视频-久久久蜜桃-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结合数据绑定控件进行简单三层架构的开发的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲女女做受ⅹxx高潮 | 国产视频精品自拍 | 毛片大全免费看 | 91精品视频国产 | 久久成人av| 欧美人狂配大交3d | 欧美超逼视频 | 国产欧美一区二区三区在线看蜜臀 | 香港三日本三级少妇66 | 国产视频观看 | 精品人妻无码一区二区三区换脸 | 美女扒开腿男人爽桶 | 天天草天天操 | 精品亚洲国产成人av制服丝袜 | 超碰888| 国产a级片免费看 | 小俊大肉大捧一进一出好爽 | 国产成人在线电影 | 在线观看中文字幕 | 欧美色图30p| h狠狠躁死你h高h | 国产在线精品福利 | 福利一区视频 | 午夜影院性| 欧美亚洲激情视频 | 99国产精品白浆在线观看免费 | 精品免费国产一区二区三区 | 亚洲高清视频在线 | 欧美熟女一区二区 | 激情综合网激情 | 韩国中文字幕在线观看 | 少妇又色又爽又高潮极品 | 爱情岛亚洲论坛入口福利 | 无码精品人妻一区二区三区漫画 | 91成人国产综合久久精品 | 日韩欧美中文字幕一区二区 | 91精品网 | 久久久久人妻一道无码AV | 娇妻被肉到高潮流白浆 | 欧美少妇一区二区三区 | 中文字幕日本人妻久久久免费 | 国产精品无码一本二本三本色 | 日韩欧美三级在线 | 成人区人妻精品一区二区不卡视频 | 色老久久 | 噼里啪啦国语版在线观看 | 国产精品一区在线免费观看 | 欧美啪视频 | 国产精品久久久久久久久免费 | 第一区免费在线观看 | 久久国产精品波多野结衣 | 成人永久免费视频 | 亚洲在线网站 | 自拍21区| 天堂资源最新在线 | 999国产精品视频免费 | 精品在线观看视频 | 成人三级晚上看 | 黄色香蕉视频 | 一区二区三区四区在线视频 | 在线欧美视频 | xxxx色| 美日韩av| 婷久久 | 无码人妻丰满熟妇精品区 | 人人人插 | 久久久免费观看 | 国产乱码av | 黄色男女网站 | 怎么可能高潮了就结束漫画 | 久久丫精品久久丫 | 五月天婷婷激情 | 亚洲美女自拍偷拍 | 狠狠人妻久久久久久综合麻豆 | 亚洲女优一区 | 日韩一级大片 | 136fldh导航福利微拍 | 国产人妖ts重口系列网站观看 | 欧美一级黄色片子 | 日产精品久久久一区二区 | 天堂激情网 | 久久精品一区二区三区四区 | 精品无码人妻一区二区三区品 | 欧美日韩国产精品一区二区 | av高清在线 | 最近中文字幕在线中文高清版 | 涩色网 | 久久这里只有精品9 | 免费黄色在线网址 | 动漫美女隐私无遮挡 | 亚洲精品国产精品乱码在线观看 | 天堂网在线看 | 久久免费电影 | 国产又粗又长又硬免费视频 | 少女情窦初开的第4集在线观看 | 日韩毛片网 | 日韩中文字幕免费观看 | 中文字幕二区三区 | 日韩深夜视频 |