三层中我们已经知道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方法中的内容实现,
这只是对一个表的操作中就存在重复的现象,当我们要对别的表进行操作的时候重复的内容将会更多。
编程的一个基本原则就是避免重复,我们要的不是复制而是复用,当采用复制的功能时候第一件要想到的就是代码的重构。