机房收费系统——三层

看了好多博客,犯了好多错误,总算是过去了。前人栽树,后人乘凉,为了不让后人再度如我般心酸,我就勉为其难,好好整理一番吧!

首先三层得知道有什么。

知道了有什么就得知道他们的关系。


看了关系传输,就应该知道,实体层是是都需要的,因此,我们就要先把实体层写上。(解释一下,这个实体就是数据表上的信息。)

  1. Public Class User  
  2.     Private name As String  
  3.     Private password As String  
  4.     Private Userid As String  
  5.     Private level As String  
  6.     Private account As String  
  7. '以下为可读写属性  
  8.     Public Property user_name() As String  
  9.         Get  
  10.             Return name  
  11.         End Get  
  12.         Set(ByVal value As String)  
  13.             name = value  
  14.         End Set  
  15.     End Property  
  16.     Public Property user_id() As String  
  17.         Get  
  18.             Return Userid  
  19.         End Get  
  20.         Set(ByVal value As String)  
  21.             Userid = value  
  22.         End Set  
  23.     End Property  
  24.     Public Property user_pwd() As String  
  25.         Get  
  26.             Return password  
  27.         End Get  
  28.         Set(ByVal value As String)  
  29.             password = value  
  30.         End Set  
  31.     End Property  
  32.     Public Property user_level() As String  
  33.         Get  
  34.             Return level  
  35.         End Get  
  36.         Set(ByVal value As String)  
  37.             level = value  
  38.         End Set  
  39.     End Property  
  40.     Public Property user_account() As String  
  41.         Get  
  42.             Return account  
  43.         End Get  
  44.         Set(ByVal value As String)  
  45.             account = value  
  46.         End Set  
  47.     End Property  
  48. End Class  

有了实体层之后,就可以找三层之间的关系,首先得明白,他们都是干什么的。

UI这个就是主管from窗体的,他在接收BLL的返回值之前首先的保证窗体内部信息完全,因此就有以下代码。


  1. Public Class Form1  
  2.   
  3.     Private Sub butCancel_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles butCancel.Click  
  4.         End  
  5.     End Sub  
  6.   
  7.     Private Sub butOK_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles butOK.Click  
  8. '定义一个实体类对象,将文本框中的内容赋给实体类对象  
  9.         Dim thisUser As Model.User = New Model.User  
  10.         thisUser.user_id = txtUserID.Text.ToString()  
  11.         thisUser.user_pwd = txtUserPWD.Text.ToString()  
  12. '定义一个业务逻辑层对象,根据业务逻辑层返回的结果,通知用户信息  
  13.         Dim uB As BLL.UserBLL = New BLL.UserBLL  
  14.         If uB.query_user(thisUser) Then  
  15.             MsgBox(True)  
  16.         Else  
  17.             MsgBox(False)  
  18.         End If  
  19.     End Sub  
  20. End Class  

BLL是判断业务逻辑的,那么他的任务就是把DAL的返回信息传给UI。

  1. Public Class UserBLL  
  2. '定义一个D层的对象  
  3.     Dim db As DAL.UserDB = New DAL.UserDB  
  4. '此函数的作用是返回D层的执行结果  
  5.     Public Function query_user(ByVal model As Model.User) As Boolean  
  6.         Return db.Query_User(model)  
  7.     End Function  
  8. End Class  
最后就是DAL,他的任务就是联系数据库,然后把信息返回给BLL。

  1. Imports System.Data.SqlClient  
  2.   
  3. Public Class UserDB  
  4. '数据库连接语句  
  5.     Dim str As String = "Data Source=localhost;Initial Catalog=Char;Persist Security Info=True;User ID=sa;Password=1"  
  6.     Dim conn As SqlClient.SqlConnection  
  7.   
  8.     Public Sub New()             '构造函数 建立连接,打开数据库  
  9.         conn = New SqlClient.SqlConnection  
  10.         conn.ConnectionString = str  
  11.         conn.Open()  
  12.     End Sub  
  13. '查询数据库中的用户是否存在  
  14.     Public Function Query_User(ByVal tstUser As Model.User) As Boolean  
  15.              '数据库查询语句  
  16.         Dim sqlstr As String  
  17.         sqlstr = "Select * From user_info Where user_id='" & tstUser.user_id & "' And user_PWD = '" & tstUser.user_pwd & "'"  
  18.            '查询  
  19.         Dim sqlcmd As SqlClient.SqlCommand = New SqlClient.SqlCommand(sqlstr, conn)  
  20.   
  21.         Dim myReader As SqlDataReader '定义一个reader用来读数据  
  22.         myReader = sqlcmd.ExecuteReader() '运行你的查询,结果到myReader  
  23.         If myReader.Read() Then '如果查到了数据  
  24.             Return True  
  25.         Else  
  26.             Return False  
  27.         End If  
  28.   
  29.     End Function  
  30. End Class  
总结:三层是一个渐进的过程,多敲几遍,多用几种方法,注意引用,应该就能过去了。








你可能感兴趣的:(机房收费系统——三层)