📄 cserver.class
字号:
' Gambas class fileSTATIC PUBLIC All AS NEW CollectionSTATIC PRIVATE $iKey AS IntegerPUBLIC Name AS StringPUBLIC Key AS StringPUBLIC Handle AS ConnectionPUBLIC WasOpened AS BooleanPUBLIC Databases AS String[]PUBLIC Users AS String[]PRIVATE $cAdmin AS CollectionPUBLIC SUB _new(sType AS String, OPTIONAL sHost AS String, OPTIONAL sUser AS String, OPTIONAL sPassword AS String) Handle = NEW Connection WITH Handle .Host = sHost .Type = sType .Login = sUser .Password = sPassword '.Name = sDatabase END WITH IF sHost THEN Name = sHost ELSE Name = "localhost" ENDIF IF sUser THEN Name = sUser & "@" & Name ENDIF Name = Name & " (" & sType & ")" 'INC $iKey Key = Replace(Name, "/", Chr$(9)) 'CStr($iKey) IF NOT All.Exist(Key) THEN All[Key] = MEENDSTATIC PUBLIC SUB Remove(hServer AS CServer) hServer.Close All.Remove(hServer.Key)ENDSTATIC PUBLIC SUB RemoveAll() DIM hServer AS CServer FOR EACH hServer IN All Remove(hServer) NEXTENDPUBLIC FUNCTION Close() AS Boolean RETURN CConnection.RemoveAll(ME)ENDPRIVATE SUB RefreshDatabase() DIM hDatabase AS Database Databases = NEW String[] FOR EACH hDatabase IN Handle.Databases Databases.Add(hDatabase.Name) NEXT Databases.SortENDPRIVATE SUB RefreshUser() DIM hUser AS User Users = NEW String[] $cAdmin = NEW Collection FOR EACH hUser IN Handle.Users Users.Add(hUser.Name) IF hUser.Administrator THEN $cAdmin[hUser.Name] = TRUE ENDIF NEXT Users.SortENDPUBLIC FUNCTION Exec() AS String Handle.Open RefreshDatabase RefreshUser Handle.Close WasOpened = TRUECATCH RETURN Conv$(Error.Text, System.Charset, Desktop.Charset)ENDPUBLIC FUNCTION CreateUser(sUser AS String, bAdmin AS Boolean, sPassword AS String) AS Boolean Handle.Open Handle.Users.Add(sUser, sPassword, bAdmin) RefreshUserFINALLY Handle.CloseCATCH Message.Error(("Cannot create user.") & "\n\n" & Error.Text) RETURN TRUEENDPUBLIC FUNCTION DeleteUser(sUser AS String) AS Boolean Handle.Open Handle.Users.Remove(sUser) RefreshUserFINALLY Handle.CloseCATCH Message.Error(("Cannot delete user.") & "\n\n" & Error.Text) RETURN TRUEENDPUBLIC FUNCTION IsAdmin(sUser AS String) AS Boolean RETURN $cAdmin.Exist(sUser)ENDPUBLIC FUNCTION EditUser(sUser AS String, sNewPassword AS String) AS Boolean Handle.Open Handle.Users[sUser].Password = sNewPasswordFINALLY Handle.Close IF Handle.Login = sUser OR ((NOT Handle.Login) AND sUser = System.User) THEN Handle.Password = sNewPassword ENDIFCATCH Message.Error(("Cannot edit user.") & "\n\n" & Error.Text) RETURN TRUEENDPUBLIC FUNCTION CreateDatabase(sName AS String) AS String Handle.Open Handle.Databases.Add(sName) RefreshDatabaseFINALLY Handle.CloseCATCH Message.Error(("Cannot create database.") & "\n\n" & Error.Text) RETURN TRUEENDPUBLIC FUNCTION DeleteDatabase(sName AS String) AS Boolean CConnection.Remove(CConnection.All[Key &/ sName]) Handle.Open Handle.Databases.Remove(sName) RefreshDatabaseFINALLY Handle.CloseCATCH Message.Error(("Cannot delete database.") & "\n\n" & Error.Text) RETURN TRUEEND
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -