Функции программы имеют общую структуру. Фактически, некоторые функции вы можете добавить самостоятельно, например, первоначальное подключение к базе данных. Вы можете сначала установить
переменные, а затем через INIT()<%
выбирать разные типы баз данных.
'При ошибке возобновить далее
КлассКоннекс
publicConnEx
public DBpath '---------путь к базе данных
public DBtype '---------Тип базы данных 1 (Доступ) 2 (SqlServer) 3 (расширяемый)
public ConnMethod '--------Метод подключения (DSN, не-DSN)
общедоступный пользователь
общественный пропуск
Подкласс_инициализация
Завершить
субподчинение()
ConnStr = "Driver={Драйвер Microsoft Access (*.mdb)};dbq="&Server.MapPath("Date.mdb")
Установите ConnEx = Server.Createobject("ADODB.CONNECTION")
ConnEx.Open ConnStr
CatchError("Class_Terminate")
Конец Sub
Sub CatchError( Str )
Если Ошибка Тогда
Ошиб.Очистить
Класс_Терминировать()
Response.Write("Обнаружена ошибка, программа завершается! На "&Str&"")
Ответ.Конец()
Конец, если
Завершить подписку
'******************************************
'*Поиск существования записей с помощью операторов SQL подвержен ошибкам'************************************ ** ******
Функция HasRecordBySql(Sql)
Вызов CheckSql(Sql,"R")
Дим Рс, ХасР
Установите Rs = ConnEx.Execute( Sql )
CatchError("HasReordSql")
Если нет (Rs.eof или Rs.bof), то
HasR=Ложь
Еще
HasR=Истина
Конец, если
Rs.Закрыть
Установите рупий = ничего
HasRecordBySql = HasR
Конечная функция
'******************************************
'*Определить, существует ли запись по идентификатору'*********************************
Функция HasRecordById(StrTableName, IntID )
'ПроверитьЗначение(IntID, 1)
Дим Рс, ХасР
Sql = "Выбрать верхнюю 1 * из "&StrTableName&" Где Id = "&IntID
Вызов CheckSql(Sql,"R")
Установите Rs = ConnEx.Execute(Sql)
CatchError("HasRecordByID")
Если нет (Rs.eof или Rs.bof), то
HasR=Ложь
Еще
HasR=Истина
Конец, если
рупийблизко
Установите рупий = ничего
HasRecordById = HasR
Конечная функция
'*********************************************
'*Получить набор записей с помощью оператора SQL'*************************************** ** *****
Функция GetRsBySql(Sql)
Вызов CheckSql(Sql,"R")
Дим рупий
Установить Rs = Server.CreateObject("Adodb.RecordSet")
Rs.Open Sql,ConnEx,1,1
Установите GetRsBySql = Rs.
Конечная функция
'************************************************ *
'*Получить значение определенного поля'****************************************** ** ****
Функция GetValueBySql(Sql)
Вызов CheckSql(Sql,"R")
Тусклый рупий,ReturnValue
Установите Rs = ConnEx.Execute(Sql)
CatchError("GetValueBySql")
Если нет (Rs.Eof или Rs.Bof), Тогда
Возвращаемое значение = рупий (0)
Еще
ReturnValue = "Нет записи"
Конец, если
Rs.Закрыть
Установите рупий = ничего
GetValueBySql = Возвращаемое значение
Конечная функция
'===========================Обновление,Вставка=============== ====
'********************************************* ***
'*Используйте SQL для изменения данных'****************************************** **
Функция UpdateBySql(Sql)
Вызов CheckSql(Sql,"w")
ConnEx.Execute(Sql)
CatchError("UpdateBySql")
UpdateBySql = Истина
Конечная функция
'************************************************ *
'*Вставка данных с помощью операторов SQL'****************************************** **
Функция InsertBySql(Sql)
Вызов CheckSql(Sql,"w")
ConnEx.Execute(Sql)
CatchError("InsertBySql")
InsertBySql = Истина
Конечная функция
'=====================Удалить====================
'* ** *******************************************
'*Удалить с помощью оператора SQL'****************************************** ***** *
Функция УдалитьБискл(Sql)
Вызов CheckSql(Sql,"D")
ConnEx.Execute(Sql)
CatchError("DeleteBySql")
УдалитьБискл = Истина
Конечная функция
'************************************************ *
'*Проверьте разрешения оператора SQL и определите разрешения, принадлежащие оператору, в соответствии с флагом'****************************** **** *************
Sub CheckSql( Sql , Флаг )
Dim StrSql, SinCounts, DouCounts, я
StrSql = Lcase(Sql)
SinCounts = 0
ДоуКаунтс = 0
Для i = 1 до Len(StrSql)
Если Mid(StrSql,i,1) = "'" Тогда SinCounts = SinCounts + 1
Если Mid(StrSql,i,1) = """" Тогда DouConnts = DouCounts + 1
Далее
Если (SinCounts Mod 2) <> 0 Или (DouCounts Mod 2) <> 0 Или Instr(StrSql,";") > 0 Тогда
Вызов Class_Terminate()
Response.Write("Синтаксическая ошибка SQL!")
Ответ.Конец()
Конец, если
Выберите флаг обращения
Случай «Р», «р»:
Если Instr(StrSql,"delete") > 0 Или Instr(StrSql,"update") Или Instr(StrSql,"drop") > 0 Или Instr(StrSql,"insert") > 0 Тогда
Класс_Терминировать()
Response.Write("Недостаточно разрешений, нет разрешения на выполнение операций записи")
Ответ.Конец()
Конец, если
Случай «W», «w»:
Если Instr(StrSql,"delete") > 0 Или Instr(StrSql,"drop") > 0 Или Instr(StrSql,"select") > 0 Тогда
Класс_Терминировать()
Response.Write("Недостаточно разрешений, нет разрешения на выполнение операции удаления")
Ответ.Конец()
Конец, если
Случай «D», «d»:
Другой случай:
Response.Write("Ошибка флага функции CheckSql!")
Конец выбора
Конец подкласса
подкласса_Terminate
Если не IsEmpty(FriendConn), то
FriendConn.Close
Установить FriendConn = Ничего
УлавливатьОшибку()
Конец, если
Конец субтитра
Конечный класс
%>