前提:
三层中我们已经知道D层主要的作用是针对数据库,进行基本的操作(数据连接和增删该查功能)
1、基本的sql语句
查:SELECT 字段名列表 FROM 数据表名 where"条件"
增 INSERT INTO 表名(字段名1,字段名2..)VALUES("表达式1","表达式2")
该 UPDATE 表名 SET 字段名1 ="表达式1",字段名2 ="表达式2".... WHERE 字段名n ="表达式n"
删:DELETE FORM 表名 where "条件"
三层中我们已经知道D层主要的作用是针对数据库,进行基本的操作(数据连接和增删该查功能)
1、基本的sql语句
查:SELECT 字段名列表 FROM 数据表名 where"条件"
增 INSERT INTO 表名(字段名1,字段名2..)VALUES("表达式1","表达式2")
该 UPDATE 表名 SET 字段名1 ="表达式1",字段名2 ="表达式2".... WHERE 字段名n ="表达式n"
删:DELETE FORM 表名 where "条件"
例子:
Select UserName ,Level from User_Table where UserID = "1"
Insert into User_Table(UserName,PassWord) values("liangliang","123abc")
Update User_Table set UserName= "liang",PassWord = "123" Where Level = "管理员" //如果没有where将对表中所有字段进行修改。
Delect from User_Table where UserName= "feng"
2 、基本的功能
<span style="font-size:18px;">Imports System.Data '添加相关引用
Imports System.Data.SqlClient
Imports System.Reflection
Imports System.Configuration
Public Class SqlserverUser
'查询 通过输入的用户名和密码作为参数查看User_Table表中是否存在该用户。
Public Function SelectUserByUserName(ByVal user As Model.User) As Model.User
Dim cnStr As String = "server = liangliangPC;database=ComChargeSys;user id = sa;password=123456;"
Dim cn As SqlConnection = New SqlConnection(cnStr)
Dim sql As String = "select * from User_Table where UserName=@UserName and Password = @Password"
Dim cmd As SqlCommand = New SqlCommand(sql, cn)
cmd.Parameters.Add(New SqlParameter("@UserName", user.UserName))
cmd.Parameters.Add(New SqlParameter("@Password ", user.PassWord))
cn.Open()
Dim reader As SqlDataReader = cmd.ExecuteReader()
Dim Duser As Model.User = New Model.User
While reader.Read()
Duser.UserName = Trim(reader.GetString(reader.GetOrdinal("UserName")))
Duser.PassWord = Trim(reader.GetString(reader.GetOrdinal("PassWord")))
Duser.UserID = Trim(reader.GetString(reader.GetOrdinal("UserID")))
Duser.Level = Trim(reader.GetString(reader.GetOrdinal("Level")))
Duser.Head = Trim(reader.GetString(reader.GetOrdinal("Head")))
End While
Return Duser
End Function
'添加 新用户到数据库User_Table表中
Public Sub AddUser(ByVal user As Model.User)
Dim conn As String = ConfigurationManager.AppSettings("sqlconnect") '从配置文件中获取连接字符串
Dim cn As SqlConnection = New SqlConnection(conn)
Dim sql As String = "insert into User_Table(UserName,PassWord,UserID,Level,Head)values(@UserName,@PassWord,@UserID,@Level,@Head)"
Dim cmd As SqlCommand = New SqlCommand(sql, cn)
cmd.Parameters.Add(New SqlParameter("@UserName", user.UserName))
cmd.Parameters.Add(New SqlParameter("@PassWord", user.PassWord))
cmd.Parameters.Add(New SqlParameter("@UserID", user.UserID))
cmd.Parameters.Add(New SqlParameter("@Level", user.Level))
cmd.Parameters.Add(New SqlParameter("@Head", user.Head))
cn.Open()
cmd.ExecuteNonQuery()
MsgBox("用户注册成功!")
End Sub '也可以使用function过程返回一个boolean值,在B层根据boolean值的true orflase来做出相应的判断
'修改 User_Table表中的用户
Public Sub UpdateUser(ByVal user As Model.User)
... '内容与AddUser()中基本相同,只是更改下对应的sql语句,添加对应的参数,即可
End Sub
'删除 User_Table表中的用户
Public Sub DeleteUser(ByVal user As Model.User)
... '内容与AddUser()中基本相同,只是更改下对应的sql语句,添加对应的参数,即可
End Sub
End Class</span>
3总结:
SqlserverUser类中的四个方法实现对User_Table表的基本操作(增删改查)。最后的两个方法Update和Delect在形式上和Add的内容一样,只是修改下对应的sql语句和参数即可,其他的内容可以通过复制Add方法中的内容实现,
这只是对一个表的操作中就存在重复的现象,当我们要对别的表进行操作的时候重复的内容将会更多。
编程的一个基本原则就是避免重复,我们要的不是复制而是复用,当采用复制的功能时候第一件要想到的就是代码的重构。