三层架构之抽象工厂加反射——实现数据库转换
2011-03-25 10:23
656 查看
PublicClassLogin[code]PrivateSubbtnLogin_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnLogin.Click
DimLUserAsNewEntity.User
DimBCheckAsNewBLL.B_Login
LUser.User_ID=txtName.Text
LUser.User_Pwd=txtPwd.Text
IfBCheck.Check(LUser)=TrueThen
MsgBox("登录成功!")
Else
MsgBox(“"登录失败!")
EndIf
EndSub
PrivateSubbtnCancle_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnCancle.Click
End
EndSub
EndClass[/code]业务逻辑层
PublicClassB_Login[code]FunctionCheck(ByValUserAsEntity.User)AsBoolean
DimDaUserAsNewDAL.D_UserInfo
DimBlUserAsNewEntity.User
Bluser.User_ID=User.ID
BlUser=DaUser.Check(BlUser)
IfBlUser.User_Pwd=User.User_PwdThen
ReturnTrue
Else
ReturnFalse
EndIf
EndFunction
EndClass[/code]数据持久层
ImportsSystem.Data.SqlClient[code]PublicClassD_UserInfo
DimConnStrAsString="DataSource=******;InitialCatalog=Student;UserID=sa;Password=******"
DimconnAsSqlConnection=NewSqlConnection(ConnStr)
FunctionCheck(ByValUserAsEntity.User)AsEntity.User
DimsqlAsString="select*fromUserInfowhereUserInfo="&User.User_ID
DimcmdAsSqlCommand=NewSqlCommand(sql,conn)
DimreadAsSqlDataReader
Try
conn.Open()
read=cmd.ExecuteReader
User.User_ID=read.Item(0)
User.User_Pwd=read.Item(1)
ReturnUser
CatchexAsException
User.User_Pwd=""
ReturnUser
EndTry
EndFunction
EndClass[/code]
PublicInterfaceIUserInfo[code]FunctionCheck(ByValIUserAsEntity.User)AsEntity.User
EndInterface[/code]工厂类
Imports[Interface][code]PublicClassDFactory
'DimDataBaseAsString="Access"
DimDataBaseAsString="Sql"
FunctionCreateUserInfo()AsIUserInfo
DimDBAsIUserInfo
SelectCaseDataBase
Case"Sql"
DB=NewD_UserInfoSql
'Case"Access"
'DB=NewD_UserInfoAccess
EndSelect
ReturnDB
EndFunction
EndClass[/code]
Imports[Interface][code]ImportsSystem.Reflection
PublicClassDFactory
'抽象工厂加反射
DimDBStringAsString=System.Configuration.ConfigurationSettings.AppSettings("DBString")
FunctionCreateUserInfo()AsIUserInfo
ReturnCType(Assembly.Load("DAL").CreateInstance("DAL.D_UserInfo"&DBString),IUserInfo)
EndFunction
EndClass[/code]数据持久层
ImportsSystem.Data.SqlClient[code]PublicClassD_UserInfoSql:Implements[Interface].IUserInfo
'DimConnStrAsString="DataSource=******;InitialCatalog=Student;UserID=sa;Password=******"
DimConnStrAsString=System.Configuration.ConfigurationSettings.AppSettings("ConnStr")
DimconnAsSqlConnection=NewSqlConnection(ConnStr)
PublicFunctionCheck(ByValIUserAsEntity.User)AsEntity.UserImplements[Interface].IUserInfo.Check
DimsqlAsString="select*fromUserInfowhereUserInfo="&IUser.User_ID
DimcmdAsSqlCommand=NewSqlCommand(sql,conn)
DimreadAsSqlDataReader
Try
conn.Open()
read=cmd.ExecuteReader
IUser.User_ID=read.Item(0)
IUser.User_Pwd=read.Item(1)
ReturnIUser
CatchexAsException
IUser.User_Pwd=""
ReturnIUser
EndTry
EndFunction
EndClass[/code]配置文件
<appSettings>[code]<addkey="ConnStr"value="DataSource=******;InitialCatalog=Student;UserID=sa;Password=******"></add>
<addkey="DBString"value="Sql"></add>
</appSettings>[/code]