根据标准更新代码

时间:2010-02-24 09:24:20

标签: c# sql-server vb.net

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

Windows应用程序

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

代码。

的Form_Load

    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层架构来完成相同的过程。

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

需要VB.Net代码帮助

2 个答案:

答案 0 :(得分:2)

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

注意:通过添加每层的dll作为UI项目的参考,将这些图层添加到UI。

<强> DAL

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

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

datagrid2.DataSource = new BLL().GetData(servername.Text,databasename.Text);
datagrid2.DataMember = "tb1";
datagrid2.DataBind();

答案 1 :(得分:-1)

以下代码应位于您的表示层

 Datagrid2.DataSource = ds.Tables("tb1")

以下图层应位于数据访问层

 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")

但我强烈建议使用类似的东西,使用像NHibernate或EntityFramework这样的ORM或至少来自LinkToSql