我这样的代码算不算三层架构?
1.首先建立命名空间下的一个类SqlDB(或是OledbDb),包含几个主要方法(函数):Execute、SelectDataSet、SelectDataTable
- VB.NET code
Public Overloads Sub Execute(Optional ByVal ConI As Integer = 0) ''执行Sql查询 ThisError = False Dim MyConnection As SqlConnection = New SqlConnection(ConStr(ConI)) Try MyConnection.Open() Catch ex As Exception isError = True ThisError = True Dim myDbError As DbError = New DbError() myDbError.sbrErrorText = New StringBuilder() myDbError.sbrErrorText.Append("[错误原因]").Append(Chr(10)).Append("打开[数据库连接]时出错。").Append(Chr(10)).Append(Chr(10)).Append("[错误提示]").Append(Chr(10)).Append("当前所使用的数据连接字符序号(ConI)为:").Append(ConI).Append(Chr(10)).Append("当前所使用的数据连接字符串(ConStr)为:").Append(ConStr(ConI)) Call myDbError.AddErrorLog(myDbError.sbrErrorText) ErrorNotice = myDbError.sbrErrorText.Replace(Chr(10), "<br>").ToString Exit Sub End Try Dim MyCommand As SqlCommand = New SqlCommand(strSQL, MyConnection) Try MyCommand.ExecuteNonQuery() Catch ex As Exception isError = True ThisError = True Dim myDbError As DbError = New DbError() myDbError.sbrErrorText = New StringBuilder() myDbError.sbrErrorText.Append("[错误原因]").Append(Chr(10)).Append("Sql语句执行时出错。").Append(Chr(10)).Append(Chr(10)).Append("[连接序号(ConI)]").Append(ConI).Append(Chr(10)).Append(Chr(10)).Append("[错误语句]").Append(Chr(10)).Append(strSQL) Call myDbError.AddErrorLog(myDbError.sbrErrorText) ErrorNotice = myDbError.sbrErrorText.Replace(Chr(10), "<br>").ToString End Try MyConnection.Close() End Sub Public Function SelectDataSet(Optional ByVal ConI As Integer = 0) As DataSet '读取数据,返回DataSet ThisError = False Dim MyConnection As SqlConnection = New SqlConnection(ConStr(ConI)) Dim MyCommand As SqlDataAdapter Dim DS As DataSet = New DataSet() Try MyCommand = New SqlDataAdapter(strSQL, MyConnection) MyCommand.Fill(DS, "My") MyConnection.Close() Catch ex As Exception isError = True ThisError = True Dim myDbError As DbError = New DbError() myDbError.sbrErrorText = New StringBuilder() myDbError.sbrErrorText.Append("[错误原因]").Append(Chr(10)).Append("Sql语句执行时出错。").Append(Chr(10)).Append(Chr(10)).Append("[连接序号(ConI)]").Append(ConI).Append(Chr(10)).Append(Chr(10)).Append("[错误语句]").Append(Chr(10)).Append(strSQL) Call myDbError.AddErrorLog(myDbError.sbrErrorText) ErrorNotice = myDbError.sbrErrorText.Replace(Chr(10), "<br>").ToString End Try Return DS End Function2.自定义一个类,比如Site.Admin.AdminDb,里面包含了Add、Delete、Login、Update等过程(函数),Sql语句都放在这个类里面。以下为部分代码:
- VB.NET code
Public Function Add() As Integer '添加管理员帐号 '如果管理员帐号存在,则返回0;如果不存在,则添加管理员帐号,返回新AdminID If IsExist() > 0 Then Return 0 Else Call Filter() Dim MyDB As SqlDB = New SqlDB() MyDB.strSQL = "Insert Into [Admin_User] " & _ "(TrueName, AdminName, UserPass) " & _ "Values ('" + TrueName + "', '" + AdminName + "', '" + UserPass + "')" MyDB.Execute() AdminId = IsExist() End If End Function Public Sub Delete(ByVal AdminId As String) '删除管理员帐号 Dim MyDB As SqlDB = New SqlDB() MyDB.strSQL = "Delete From [Admin_User] Where AdminId=" + AdminId MyDB.Execute() End Sub Public Sub ModifyUser() '修改用户名及密码 Call Filter() Dim MyDB As SqlDB = New SqlDB() MyDB.strSQL = "Update [Admin_User] set " & _ "AdminName = '" + AdminName + "'" If UserPass.Length > 0 Then MyDB.strSQL += ", UserPass = '" + UserPass + "'" End If MyDB.strSQL += " Where AdminId=" + AdminId.ToString MyDB.Execute() End Sub
3.在后台管理员操作的Admin.aspx绑定的Admin.aspx.vb中进行流程控制,并调用Site.Admin.AdminDb中的过程(函数)进行数据操作,部分代码如下:
- VB.NET code
If Not IsPostBack() Then Dim strAction As String = Request.QueryString("Action") Select Case strAction Case "Add" Call LoatAddData() Case "Delete" Call Delete() Case "ModifyUser" Call LoatModifyUserData() Case "ModifyUserRights" Call LoadUserRightsData() Case Else '有数据提交 Dim strAction2 As String = Request.Form("Action2") Select Case strAction2 Case "ModifyUserRightsTo" Call ModifyUserRightsTo() Case Else Call LoadList() End Select End Select End If Sub LoadList() pnlList.Visible = True Dim myAdminDb As AdminDb = New AdminDb() Dim DataTable As DataTable = myAdminDb.GetAdminList() rptList.DataSource = DataTable rptList.DataBind() DataTable.Dispose() End Sub Sub Delete() Dim strAdminId As String = Request.QueryString("AdminId") If strAdminId = "" Or Not IsNumeric(strAdminId) Then Response.Write(WebNotice.SetAlert("错误的参数!", "?Action=")) Response.End() Else Dim MyAdminDb As AdminDb = New AdminDb() MyAdminDb.Delete(strAdminId) Response.Write(WebNotice.SetAlert("删除成功!", "?Action=")) Response.End() End If End Sub4.在Admin.aspx文件中用一个Repeater控件显示管理员列表
- HTML code
<asp:Repeater ID="rptList" runat="server"> <headertemplate> <TR align=center> <TD height=22 class=forumHeaderBackgroundAlternate>用户名</TD> <TD class=forumHeaderBackgroundAlternate>登录次数</TD> <TD class=forumHeaderBackgroundAlternate>上次登录时间</TD> <TD class=forumHeaderBackgroundAlternate>上次登录IP</TD> <TD class=forumHeaderBackgroundAlternate>操作</TD> </TR> </headertemplate> <itemtemplate> <TR> <TD class=forumRow align=center><A href=?Action=EditPass&AdminId=<%#container.DataItem(0)%>><%#container.DataItem(2)%></A></TD> <TD class=forumRow align=center><%#container.DataItem(3)%></TD> <TD class=forumRow align=center><%#container.DataItem(4)%></TD> <TD class=forumRow align=center><%#container.DataItem(5)%></TD> <TD class=forumRow align=center><A href=?Action=ModifyUser&AdminId=<%#container.DataItem(0)%>>修改密码</A> | <A href=?Action=ModifyUserRights&AdminId=<%#container.DataItem(0)%>>修改权限</A> | <A href="?Action=Delete&AdminId=<%#container.DataItem(0)%>" onClick="javascript:return confirm('确实要删除这个帐号吗?')">删除</A></TD> </TR> </itemtemplate> <footertemplate> </footertemplate> </asp:Repeater>[解决办法]
分清楚就好,何必在意是否符合