三层中对D层代码的理解

    对于三层总体来说是理解的,三层之间的关系在上篇博客(三层基本理解)中已经有说明,看着三层的代码感觉对于D层中的数据库的代码还不是很熟悉。现在大致分析一下D层的代码。

    DAL层:引用实体层,进行数据库的连接,将查询到的记录赋值给实体层。

Public Class UserDAO
    '首先创建数据库的连接
    Public conn As New SqlConnection("server=(local);database=Login;user id=sa;password=www")    '这里的server后面写成.也可以

    '传实体userinfo,而不是参数,这样可方便对实体中的参数进行调用
    Public Function SelectUser(ByRef User As UserInfo) As Entity.UserInfo
        '定义类型为sqlDatareader的变量reader
        Dim reader As SqlDataReader
        '实例化新的userinfo
        Dim eUser As New Entity.UserInfo

        '下面的这段程序就相当于dim sql as string ="select  ID,UserName,PWD From Users Where UserName='"User.UserName"' And PWD='"User.PWD"'"  
        '而写成这个程序块是为了防止Sql注入,即安全性考虑,这个地方还没有深究,以后再慢慢研究  
        '@UserName相当于传了一个参数,("@UserName", User.UserName)相当于给参数名字传递了参数。
        Dim sql As String = "Select UserName,Password From Users Where username=@UserName And password =@Password"
        Dim cmd As New SqlCommand(sql, conn)    '创建sqlcommand对象
        cmd.CommandText = sql                   '获取sql语句的具体类型
        cmd.CommandType = CommandType.Text

        cmd.Parameters.Add(New SqlParameter("@UserName", User.UserName))
        cmd.Parameters.Add(New SqlParameter("@Password", User.password))

        conn.Open()                       '打开数据连接
        reader = cmd.ExecuteReader()      '执行查询语句,并生成一个datareader

        '读取查询到的数据,并返回给相应的属性
        While reader.Read()

            '获取数据库中相应字段的数据
            eUser.UserName = reader.GetString(0)
            eUser.Password = reader.GetString(1)
        End While
        Return eUser                   '返回查询到的实体
        conn.Close()                   '关闭连接
    End Function

End Class


    sqlConnection相当于我们连接数据库的一个通道,而sqlCommand就相当于这个通道的开关,CommandText就是这个通道里可以通过的东西,那么SqlDataReader就是存放这些东西的一个容器。整个D层就是引用实体,然后带着信息进行数据库的连接,最后返回查询到的实体。

    本来这些内容是在前面的学习中就要掌握的,但是那时候不是特别理解,迷迷糊糊的,这次三层中看到这些想着必须要弄明白,可能还是说的不够明白,不明白的来问我吧。

    本来想好好总结一下.net数据库连接的内容,这两天又重新回顾了一下红皮书,也查了一些资料,但是由于机房重构只是开了一个小头,对于ADO.net还是没有特别明白,机房重构会用到很多这方面的内容,等了解的多了再好好的总结一下,现在感觉还是功夫不到家。


评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值