看了好多博客,犯了好多错误,总算是过去了。前人栽树,后人乘凉,为了不让后人再度如我般心酸,我就勉为其难,好好整理一番吧!
首先三层得知道有什么。
知道了有什么就得知道他们的关系。
看了关系传输,就应该知道,实体层是是都需要的,因此,我们就要先把实体层写上。(解释一下,这个实体就是数据表上的信息。)
- Public Class User
- Private name As String
- Private password As String
- Private Userid As String
- Private level As String
- Private account As String
- '以下为可读写属性
- Public Property user_name() As String
- Get
- Return name
- End Get
- Set(ByVal value As String)
- name = value
- End Set
- End Property
- Public Property user_id() As String
- Get
- Return Userid
- End Get
- Set(ByVal value As String)
- Userid = value
- End Set
- End Property
- Public Property user_pwd() As String
- Get
- Return password
- End Get
- Set(ByVal value As String)
- password = value
- End Set
- End Property
- Public Property user_level() As String
- Get
- Return level
- End Get
- Set(ByVal value As String)
- level = value
- End Set
- End Property
- Public Property user_account() As String
- Get
- Return account
- End Get
- Set(ByVal value As String)
- account = value
- End Set
- End Property
- End Class
有了实体层之后,就可以找三层之间的关系,首先得明白,他们都是干什么的。
UI这个就是主管from窗体的,他在接收BLL的返回值之前首先的保证窗体内部信息完全,因此就有以下代码。
- Public Class Form1
- Private Sub butCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butCancel.Click
- End
- End Sub
- Private Sub butOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butOK.Click
- '定义一个实体类对象,将文本框中的内容赋给实体类对象
- Dim thisUser As Model.User = New Model.User
- thisUser.user_id = txtUserID.Text.ToString()
- thisUser.user_pwd = txtUserPWD.Text.ToString()
- '定义一个业务逻辑层对象,根据业务逻辑层返回的结果,通知用户信息
- Dim uB As BLL.UserBLL = New BLL.UserBLL
- If uB.query_user(thisUser) Then
- MsgBox(True)
- Else
- MsgBox(False)
- End If
- End Sub
- End Class
BLL是判断业务逻辑的,那么他的任务就是把DAL的返回信息传给UI。
- Public Class UserBLL
- '定义一个D层的对象
- Dim db As DAL.UserDB = New DAL.UserDB
- '此函数的作用是返回D层的执行结果
- Public Function query_user(ByVal model As Model.User) As Boolean
- Return db.Query_User(model)
- End Function
- End Class
- Imports System.Data.SqlClient
- Public Class UserDB
- '数据库连接语句
- Dim str As String = "Data Source=localhost;Initial Catalog=Char;Persist Security Info=True;User ID=sa;Password=1"
- Dim conn As SqlClient.SqlConnection
- Public Sub New() '构造函数 建立连接,打开数据库
- conn = New SqlClient.SqlConnection
- conn.ConnectionString = str
- conn.Open()
- End Sub
- '查询数据库中的用户是否存在
- Public Function Query_User(ByVal tstUser As Model.User) As Boolean
- '数据库查询语句
- Dim sqlstr As String
- sqlstr = "Select * From user_info Where user_id='" & tstUser.user_id & "' And user_PWD = '" & tstUser.user_pwd & "'"
- '查询
- Dim sqlcmd As SqlClient.SqlCommand = New SqlClient.SqlCommand(sqlstr, conn)
- Dim myReader As SqlDataReader '定义一个reader用来读数据
- myReader = sqlcmd.ExecuteReader() '运行你的查询,结果到myReader
- If myReader.Read() Then '如果查到了数据
- Return True
- Else
- Return False
- End If
- End Function
- End Class