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

对于B/S架构的三层架构的开发,可能很多的人都已经了解的是比较清楚的。哪么我在这里用的是最简单的三层架构。ui+bll+dal+dbsqlhelp+model.
使用objectdatasource结合数据绑定控件进行简单三层架构的开发

从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。

你可能感兴趣的:(dataSource)