三层实例--添加信息

对三层的基本知识已经有了一定的了解和掌握,但是要想真正去灵活运用它还需要我们去实践,只有经过亲自动手操作实现后才能理解得更加透彻。

首先我们需要建一张数据表,以我的为例,建一张Users表,添加UserName、Password、Email等字段。

然后就开始在VS上进行操作,先建一些基本的项目,如下表:

实体类是贯穿于三层之间,进行数据传递:

Public Class UserInfo
    Public ID As Integer
    Public UserName As String
    Public Password As String
    Public Email As String
    Property UID As Integer
        Get
            Return ID
        End Get
        Set(value As Integer)
            ID = value
        End Set
    End Property
    Property UUserName As String
        Get
            Return UserName
        End Get
        Set(value As String)
            UserName = value
        End Set
    End Property
    Property UPassword As String
        Get
            Return Password
        End Get
        Set(value As String)
            Password = value
        End Set
    End Property
    Property UEmail As String
        Get
            Return Email
        End Get
        Set(value As String)
            Email = value
        End Set
    End Property
End Class

DAL层是对数据库进行操作:

Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Data
Imports System.Data.SqlClient
Imports Add.Model

Public Class UserDAO
    Public Function ConnectString() As String     '连接数据库
        ConnectString = "server=.;UID=sa;PWD=123456;database=Login"

    End Function
    Public Function AddUser(ByVal userinfo As UserInfo) As Boolean
        Dim con As SqlClient.SqlConnection
        Dim cmd As SqlClient.SqlCommand

        Dim intResult As Integer

        con = New SqlClient.SqlConnection(ConnectString())
        cmd = con.CreateCommand()
        cmd.CommandText = "insert into Users(UserName,Password,Email) values('" & userinfo.UserName & "','" & userinfo.Password & "','" & userinfo.Email & "')"

        cmd.CommandType = CommandType.Text
        con.Open()
        intResult = cmd.ExecuteNonQuery()
        If intResult < 0 Then
            Return True
        Else
            Return False
        End If
        con.Close()
        con = Nothing

    End Function
    Public Function IsExist(ByVal userinfo As Model.UserInfo) As Boolean
        Dim con As SqlClient.SqlConnection = New SqlClient.SqlConnection(ConnectString)
        Dim cmd As SqlClient.SqlCommand
        Dim dalReader As SqlClient.SqlDataReader

        cmd = con.CreateCommand
        cmd.CommandText = "select * from Users where UserName='" & userinfo.UserName & "'"
        cmd.CommandType = CommandType.Text
        con.Open()
        dalReader = cmd.ExecuteReader()
        '判断数据是否已经存在
        If dalReader.HasRows = True Then
            Return True
        Else
            Return False

        End If
        con.Close()
        con = Nothing
    End Function
End Class

BLL层进行逻辑判断,并且实现UI和DAL层的数据交互:

Imports Add.DAL
Imports Add.Model
Public Class Manager
    Public Function Adduser(ByVal user As UserInfo) As Boolean
        Dim dao As New UserDAO
        Dim userinfo As New UserInfo
        If dao.IsExist(user) = True Then
            Return False
        Else
            dao.AddUser(user)
            Return True

        End If
    End Function
End Class

UI层是用户操作的界面,为用户提供输入的界面和返回信息:

Imports Add.BLL
Imports Add.Model
Public Class Form1

    Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
        Dim AddStu As New Manager  '实例化B层
        Dim UStudent As New UserInfo   '实例化实体类
        If Trim(txtUserName.Text) = "" Then
            MessageBox.Show("请输入用户名")
            Exit Sub
        End If
        If Trim(txtPassword.Text) = "" Then
            MessageBox.Show("请输入密码")
            Exit Sub
        End If
        If Trim(txtPassword2.Text) = "" Then
            MessageBox.Show("请确认密码")
            Exit Sub
        End If
        If Trim(txtPassword.Text) <> Trim(txtPassword2.Text) Then
            MessageBox.Show("两次密码不相同,请重新输入")
            Exit Sub
        End If
        '将输入的数据存储到实体类,进行传值
        UStudent.UserName = txtUserName.Text
        UStudent.Password = txtPassword.Text
        UStudent.Email = txtEmail.Text

        If AddStu.Adduser(UStudent) Then  '用户不存在
            MessageBox.Show("添加成功")
        Else   '用户已经存在
            MessageBox.Show("该用户已注册,请重新添加")
        End If
    End Sub

    Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
        End
    End Sub
End Class

执行程序:

总结:

通过这个小例子,让自己对三层的理解更加深刻,也知道了该如何运用它。原先停留在表面上的理解,至此也升华到了操作上。虽然先前有很多不理解的地方,但是通过实践,自己得到了理解。所以,当我们遇到问题的时候,不要仅仅去理解,要通过实践去做,只有真正做过之后才能真正理解。

时间: 2024-10-26 22:07:06

三层实例--添加信息的相关文章

运用Unity实现依赖注入[结合简单三层实例]

一:理论部分 依赖注入:这是 Ioc 模式的一种特殊情况,是一种基于改变对象的行为而不改变类的内部的接口编程技术.开发人员编写实现接口的类代码,并基于接口或者对象类型使用容器注入依赖 的对象实例到类中.用于注入对象实例的技术是接口注入.构造函数注入.属性(设置器)注入和方法调用注入. Unity是微软企业库一部分,是一个轻量级.可扩展的依赖注入容器,支持构造函数.属性和方法调用注入: 针对依赖注入以前我也写过一篇结合三层的文章:spring.net 结合简单三层实例 二:实例简介 1:本实例将通

原型链怎样给类下面的实例添加实例属性和实例方法

在这里要用到prototype这个关键字了,通过这个关键字可以给类下面的实例添加实例属性和方法,话不多说,直接上代码 代码实例如下: function Person(name) { this.name = name;}var p1 = new Person("zhangsan");Person.prototype.age = 18; //为类下面的实例添加实例属性Person.prototype.speak = function() { //为类下面的实例添加实例方法 console.

Devexpress报表开发:实例数据库信息

Devexpress报表开发:实例数据库信息 项目使用的是Access数据库,该数据库用于某宾馆的会员管理以及住房管理,共有以下几张表: Vip_Table:系统会员信息存放. House_Table:该宾馆所拥有的房间. House_Record:住房记录表. 1.Vip_Table结构 2.House_Table结构 3.House_Record结构 4.实例数据库下载     下载见附件 有时间会把我所使用的Devexpress以及其破解文件上传.同时附带破解方法.

调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加信息标注

前几天接了一个小项目,就是有关百度地图的,和我的上一篇不一样,上一篇是复制人家的源代码是把东西写死了的,这次的比较有难度,要调取他的接口,用js来实现. 下面我先说一下主要实现的功能,和要实现的页面 这个小项目分为前台和后台 前台需要两个页面,第一个页面是一打开就可以获得自己的实时位置,显示当前位置与当前的经纬度,这两项是自动获取的,还有标题和电话是可以自己添加的,点击添加,就是到达百度地图的页面,你刚刚添加的东西就会在这个地图上显示,形成一个标注,点击标注,里面显示的就是刚刚你添加的标题和电话

百度地图API功能给多个点添加信息窗口

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style type

百度地图循环添加标注,并循环为标注添加信息窗口问题解决

原文:百度地图循环添加标注,并循环为标注添加信息窗口问题解决 最近几年在搞地图方面的开发,主要是循环为坐标添加标注并为标注添加弹出信息窗口,起初我的代码如下: var map = new BMap.Map("Mapcontainer"); var JsonObj = eval(JsonStr); if (JsonObj != null) { for (var i = 0; i < JsonObj.length; i++) { var point = new BMap.Point(

postman接口测试:添加信息

添加信息,接口文档如图所示: 添加学生信息 简要描述: 添加学生信息 请求URL: http://url/api/user/add_stu 请求方式: post 入参是json类型 参数: 参数名 必选 类型 说明 name 是 string 学生姓名 grade 是 string 班级 phone 是 int 电话 sex 否 string 性别,如果不传默认为男 age 否 int 年龄,如果不传默认为18 addr 否 string 地址,如果不传默认为北京市昌平区 返回参数说明 参数名

cmd中mysql主键id自增,在添加信息时发生错误,再次成功添加时,id已经跳过错误的信息继续自增。

id 自增,在往这个表里添加信息时 发生错误,再次添加 id数值已经跳过之前 原文地址:https://www.cnblogs.com/Zhao159461/p/10764117.html

添加信息窗体

class Employee {  private String name; private int age; private String gender; private String telNumber; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void s