1. 程式人生 > >VB.Net 三層登入例項

VB.Net 三層登入例項

    首先在這裡祝大家端午節快樂!在三天小長假中,三層的登入例項也完成了。實現過程因為之前敲了一個C#的登入例項,再敲.net版的時候,語法產生混亂,搞不清,不過還好磕磕絆絆也實現了。下面就和大家分享一下。

    三層架構,就是將整個業務應用邏輯上劃分為:UI(表現層)、 BLL(業務邏輯層)、 DAL(資料訪問層)。使用三層的目的就是為了“高內聚,低耦合”的思想。

 UI層:為使用者提供一個互動式介面,顯示和接受使用者輸入的資料。

 BLL層:負責處理業務邏輯。通過獲取UI傳來的操作指令,決定執行業務邏輯,在需要訪問資料來源的時候,直接交給DAL處理。之後,返回必要資料給UI.

         BLL職責機制

:UI→BLL→UI

                       UI→BLL→DAL→BLL→UI

 DAL層:提供基本的資料訪問,不包含任何業務相關的邏輯處理。

 各層之間的引用關係:DAL不引用BLL和UI;BLL需要引用DAL;UI需要引用BLL,可能會間接引用DAL。

 例項:以登入為例,在使用者成功登入後,贈送使用者10積分,鼓勵使用者常常使用。

  1.首先建立資料庫,並配置連線資料庫

   

     

2.在VS中新建專案:

                                                 

   在這裡要注意的是,各層之間的引用關係。其中Model是一個實體類(

詳解請看)。在這裡可以是用類UserInfo來存使用者資訊。DbUtil是用來存資料庫連線字串的。此處理解有點模糊。

3.程式碼:

D層:UserDAO

Imports System.Data.SqlClient

Public Class UserDAO
    Public Function SelectUser(ByVal userName As String, ByVal password As String) '具有返回值的函式SelectUser
        Dim db As New LoginModel.Dbutil
        Using Conn As New SqlConnection(db.ConnString)
            Dim cmd As New SqlCommand '定義SqlCommand物件
            cmd = Conn.CreateCommand()

            cmd.CommandText = "select * from Users where 
[email protected]
and [email protected]" '引數化查詢 注意語法 cmd.CommandType = CommandType.Text cmd.Parameters.Add(New SqlParameter("@UserName", userName)) cmd.Parameters.Add(New SqlParameter("@Password", password)) Conn.Open() '開啟資料庫 Dim reader As SqlDataReader reader = cmd.ExecuteReader() '執行SQL查詢並得到結果,返回一個SqlDataReader物件 Dim user As LoginModel.UserInfo '例項化一個LoginModel.UserInfo user = Nothing While (reader.Read()) '讀取值 If (user Is Nothing) Then user = New LoginModel.UserInfo() End If user.ID = reader.GetInt32(0) '讀取值 user.UserName = reader.GetString(1) user.Password = reader.GetString(2) If (Not reader.IsDBNull(3)) Then user.Email = reader.GetString(3) End If End While Return user End Using End Function End Class
 ScoreDAO:
<pre name="code" class="vb">Imports System.Data.SqlClient

Public Class ScoreDAO
    Public Sub UpdateScore(ByVal userName As String, ByVal value As Integer)   '定義了一個沒有返回值的UpdateScore函式
        Dim DB As New LoginModel.Dbutil

        Using conn As New SqlConnection(DB.ConnString)

            Dim cmd As SqlCommand '定義個SqlCommand物件

            cmd = conn.CreateCommand()
            cmd.CommandText = "Insert into Scores Values('',@UserName,@Score)"  '執行SQL插入語句
            cmd.Parameters.Add(New SqlParameter("@UserName", userName))
            cmd.Parameters.Add(New SqlParameter("@Score", value))

            conn.Open()  '開啟資料庫連線
            cmd.ExecuteNonQuery() '修改表

        End Using

    End Sub
End Class
B層:
Public Class LoginManager
    Public Function UserLogin(ByVal userName As String, ByVal password As String) As LoginModel.UserInfo '定義了一個搞具有返回值的函式UserLogin

        Dim uDao As LoginDAL.UserDAO '定義一個LoginDAL.UserDAO的物件
        Dim user As LoginModel.UserInfo

        uDao = New LoginDAL.UserDAO()
        user = uDao.SelectUser(userName, password)

        If Not user Is Nothing Then   '判斷user若不為空的話
            Dim sDao As LoginDAL.ScoreDAO
            sDao = New LoginDAL.ScoreDAO

            sDao.UpdateScore(userName, 10) '更新資料
            Return user '返回
        Else
            Throw New Exception("登入失敗") '當用戶輸入資料錯誤時,丟擲異常

        End If


    End Function
End Class
U層:
Public Class Form1

     Private Sub btLogin_Click(sender As Object, e As EventArgs) Handles btLogin.Click
        Dim userName As String
        Dim password As String
        Dim mgr As LoginBL.LoginManager   '定義一個LoginBlL.LoginManager物件
        Dim user As LoginModel.UserInfo   '定義一個LoginModel.UserInfo物件

        userName = txtUsername.Text.Trim '將使用者輸入的使用者名稱和密碼傳給新定義的兩個物件
        password = txtPassword.Text
        mgr = New LoginBL.LoginManager
        user = mgr.UserLogin(userName, password)

        MessageBox.Show("使用者登入成功!")  '彈出視窗,提示使用者登陸成功

     End Sub
End Class

Model:

Userinfo:

Public Class UserInfo
    '定義了三個屬性
    Private _id As Integer
    Public Property ID() As Decimal
        Get
            Return _id
        End Get
        Set(value As Decimal)
            _id = value
        End Set
    End Property

    Public UserName As String
    Public Password As String'如上所示
    Public Email As String

End Class

DbUtil:
Public Class Dbutil
    Public ConnString As String = "Server=hcy-PC;Database=Login;User ID=sa;Password=123456" ‘連線資料庫
End Class

   至此,例項完成。

  .Net和C#語法結構有不同之處,在實現過程中要認真點,搞懂兩者之間的異同,小小的例子學到的不少。接下來的學習繼續努力! 

相關推薦

VB.Net 登入例項

    首先在這裡祝大家端午節快樂!在三天小長假中,三層的登入例項也完成了。實現過程因為之前敲了一個C#的登入例項,再敲.net版的時候,語法產生混亂,搞不清,不過還好磕磕絆絆也實現了。下面就和大家分

VB.NET 簡單登入例項

        首先在vs 中建立相應的類庫以及窗體,各層操作如下: 首先明確一點,我寫的三層例項是以傳實體層中的實體為例子的。UI層引用BLL層和Entity層,BLL層引用DAL層和Entity層

VB.NET+ 機房收費系統之組合查詢

  關係組合查詢已經用去了4天的時間,每天都在痛苦中煎熬,絞盡腦汁,一句程式碼都要瞪大眼睛看好長時間,有時候,因為兩句話顛倒了,就nothing了;有時候,因為table怎樣能夠轉換成實體型別,將自己困住了,一想就是半天。狀況不斷呀,看了很多師哥師姐們的程式碼,他們分享著自

VS2010構建ASP.NET架構例項演示(一)

開發環境:vs2010+SQLSERVER2008 功能:簡單實現顯示一張表的記錄。 具體步驟:       1、開啟sql server2008,在裡面建立資料庫名為halfcool,然後在資料庫建立users表,裡面有三個欄位id(自動增加),username(

VS2010構建ASP.NET架構例項演示(

8、業務層(Bll),針對具體問題的操作,也可以說是對資料層的操作,對資料業務邏輯處理。 建立的方法同上。名稱為Bll;解決方案:新增到解決方案;路徑為e:\test\Solution1;然後將Bll目錄下面的class1.cs改名為UserBll.cs了。這層要引用Da

C#版登入例項:問題除錯

前言:   小編剛剛用C#敲完三層架構的登入例項,湊著熱乎勁趕緊總結一篇,將我所遇到的問題以及別的小夥伴遇到的問題彙總於此,希望可以幫助其他小夥伴儘量少走一些彎路。 問題: 1.ExecuteRead

【C#】之登入

一、什麼是三層   我們在進行軟體設計時,一個重要的思想就是“高內聚低耦合”,而以前我們所做的那些小專案,由於程式碼量少,結構簡單,所有的操作都是在客戶端和資料庫之間(也就是兩層架構)進行的,但是對於大型的專案而言,如果按照原來的兩層架構進行設計,非常不利於軟體的可維護、可複用和可擴

.net架構開發步驟

City城市表,id ,name,password,address,phone; 1.新建一個windows窗體應用程式,CitySys 2.檔案–》新增–》新建專案–》類庫(CitySysModel)–》重新命名class1.cs的類(CityModel)。 3.根據資料表裡面的欄位,

.NET架構

零基礎學C#3.0 -- .net的三層架構 - CodingPenguin 時間 2014-01-26 17:40:00 部落格園-所有隨筆區 原文  http://www.cnblogs.com/codingpenguin/p/3534304.html 主題 .N

簡單的.NET框架的實現(學生作業管理系統)

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyCourse.aspx.cs" Inherits="XGhms.Web.Teacher.CourseControls.MyCourse" %> <%@ Register T

【ASP.NET開發】.NET架構簡單解析

這篇文章本來應該很早就寫出來的,但是一直苦於自己的精神能力有限,而且已經到了我們學校的考試周,所以時間上還是有點緊迫。關鍵的一點就是,找不到合理的思路來寫,思路沒有的話,就算是再好的素材,也寫不來大家喜歡的文章。 之前已經寫過關於.NET三層架的兩篇文章了,一篇是《【ASP

asp.net架構詳解

一、資料庫 /*==============================================================*/ /* DBMS name:      Microsoft SQL Server 2000         

.net 構架下使用事務更新多表資料

//使用TransactionScope ,需要引用System.Transactions.dll using (TransactionScope scope = new TransactionS

.NET 架構

Connection : 用於連線資料庫命令. Command : 執行鍼對資料庫的SQL命令. ExecuteScalar() : 返回第一行第一列的值(object型別). ExecuteNonQuery() : 返回執行命令後受到影響的行數(int型別). ExecuteReade

asp.net架構連線Oracle 11g詳解

asp.net三層架構連線Oracle 11g 連線Oracle時使用微軟的Oracle連線元件; 一 DAL層 using System; using System.Collections.Generic; using System.Text; using System

.net架構(3-tier application)

      做一般網站用三層架構似乎麻煩些,要考慮基層呢,用自動生成程式碼工具的話可以考慮使用。下面引用別人的對三層架構解釋。       三層架構(3-tier application) 通常意義上的三層架構就是將整個業務應用劃分為:表現層(UI)、業務邏輯層(BLL)、資

架構——登入類圖與序列圖

●前言       光說不會用,那就是一隻紙老虎。現在看C#版本的程式碼三遍,第一遍巨集觀瀏覽,第二遍照著敲,第三遍對應U層、B層、D層去研究每一部分的程式碼都有什麼作用,雖然現在還不是很透徹,但

ASP.NET 架構技術 人力資源管理系統專案HR (深入WebServic

白菜價, 想要的聯絡QQ:867635458,非誠勿擾! ASP.NET MVC Linq 技術  企業級通用OA系統  全程開發  大型企業級別OA專案實戰全新上線啦!本專案由小孔子講師全程錄製。小孔子老師大家都很熟悉了,他所錄製的其他課程都受到了學員的一致好

.net 架構的認識

     所謂三層架構,是在客戶端與資料庫之間加入了一個“中間層”,也叫元件層。 這裡所說的三層體系,不是指物理上的三層,不是簡單地放置三臺機器就是三層體系結構, 也不僅僅有B/S應用才是三層體系結構,三層是指邏輯上的三層,即使這三個層放置到一臺機器上。     在專案

VB.NET版的“8”使用者登入例項

Imports LoginBLL Imports LoginEntity Imports Facade Public Class Form1 Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Cl