首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据标准更新代码

根据标准更新代码
EN

Stack Overflow用户
提问于 2010-02-24 17:24:20
回答 2查看 323关注 0票数 0

使用VB.Net、C#.Net和SQL Server。

Windows应用程序

我想分离三层架构(表示层,数据访问层,业务逻辑层)的代码。

代码。

Form_Load

代码语言:javascript
复制
    Dim cmd As New SqlCommand
    Dim ada As New SqlDataAdapter
    Dim ds As New DataSet

    Con = New SqlConnection("Data Source='" & servername.Text & "';Initial  Catalog='"     & databasename.Text & "';Integrated Security=true")
                    Con.Open()

        cmd = New SqlCommand("Select * from tb1", Con)
        ada = New SqlDataAdapter(cmd)
        ada.Fill(ds, "tb1")
        datagrid2.DataSource = ds.Tables("tb1")

上面的代码是工作的,但我想做一个相同的过程,使用3层架构。

如何根据三层架构分离我的代码。

需要VB.Net代码帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-24 17:57:51

您可以为除UI层之外的每一层创建一个类库项目。然后,您必须将每个流程分解为这3层。例如,所有的数据访问都放在数据访问层,所有的逻辑都放在逻辑层。在UI中,您不能直接使用DAL。您应该只调用在BLL中定义的方法。

注意:通过添加每层的dll作为对UI项目的引用,将这些层添加到UI中。

DAL

代码语言:javascript
复制
public DataSet GetData(string serverName,string dataBaseName)
{
    SqlCommand cmd;
    SqlDataAdapter ada;
    DataSet ds = new DataSet();
    SqlConnection Con;

    Con = New SqlConnection("Data Source='" & serverName & "';Initial  Catalog='"  & dataBaseName & "';Integrated Security=true");
     Con.Open();

        cmd = New SqlCommand("Select * from tb1", Con);
        ada = New SqlDataAdapter(cmd);
        ada.Fill(ds, "tb1");
        return ds;
}

BLL

代码语言:javascript
复制
public DataSet GetData(string serverName,string dataBaseName)
{
    DataSet ds = new DataSet();
    ds = DoAction(new DAL().GetData(serverName, dataBaseName)); //do something on data 
    return ds;
}

UI

代码语言:javascript
复制
datagrid2.DataSource = new BLL().GetData(servername.Text,databasename.Text);
datagrid2.DataMember = "tb1";
datagrid2.DataBind();
票数 2
EN

Stack Overflow用户

发布于 2010-02-24 17:56:39

下面的代码应该在表示层上

代码语言:javascript
复制
 Datagrid2.DataSource = ds.Tables("tb1")

以下图层应位于您的数据访问层上

代码语言:javascript
复制
 Dim cmd As New SqlCommand 
 Dim ada As New SqlDataAdapter 
 Dim ds As New DataSet 

 Con = New SqlConnection("Data Source='" & servername.Text & "';Initial  Catalog='"     & databasename.Text & "';Integrated Security=true") 
 Con.Open() 

下面的代码应该在业务逻辑层上

代码语言:javascript
复制
cmd = New SqlCommand("Select * from tb1", Con)    
ada = New SqlDataAdapter(cmd)    
ada.Fill(ds, "tb1")

但我强烈建议不要使用类似的东西,使用诸如NHibernate或EntityFramework或至少来自LinkToSql的对象关系映射

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2324860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档