Для пользователей ASP, чем проще работа с базой данных, тем больше времени у них остается на рассмотрение логики и кода приложения, и эффективность будет выше.
Сегодня я здесь, чтобы дать вам представление о работе с базой данных. Эти коды постоянно дополняются и изменяются в моем долгосрочном приложении ASP. Я также выполнил с ним множество проектов. проблема в использовании его напрямую. Конечно, мои возможности ограничены, поэтому я надеюсь, что каждый сможет обсудить это вместе.
Примечание. Все коды в этом посте представляют собой версии VBScript. Кроме того, лучше всего, чтобы у вас уже были определенные навыки написания ASP.
Во-первых, позвольте мне кратко представить некоторые особенности моего класса:
Одновременно можно использовать несколько баз данных разных типов.
Нет необходимости вообще учитывать разницу в типах данных и не нужно думать о том, стоит ли добавлять одинарные кавычки в символьные поля.
Вызов очень прост, и для основной операции с базой данных обычно требуется всего одна строка кода.
Поддержка отката транзакции mssql.
Операторы SQL могут автоматически генерироваться и выводиться для облегчения отладки.
Как использовать:
1. Измените первую строку в файле clsDbctrl.asp, указав расположение вашей собственной базы данных (способ изменения см. в описании функции CreatConn ниже). Если вам нужно подключиться к нескольким базам данных, вы можете добавить их самостоятельно в том же формате.
2. Включите этот файл asp в новый файл asp. нравиться:
<!--#include file="Inc/clsDbctrl.asp" --> Или:
<!--#include virtual="/Inc/clsDbctrl.asp"-->
3. Используйте следующий код, чтобы применить этот класс:
Соединение с базой данных:
<%
OpenConn() 'Открываем соединение с базой данных
Dim db: Set db = New DbCtrl 'Создать объект
«Ваш код здесь…
Co(db) : CloseConn() 'Освобождаем объект и закрываем соединение с базой данных
%>
Или (одно или несколько подключений к базе данных):
<%
Dim db1: Set db1 = New DbCtrl: db1.dbConn = Oc(a)
Dim db2: Set db2 = New DbCtrl: db2.dbConn = Oc(b)
«Ваш код здесь…
Со(дб1) : Со(дб2)
%>
4. Конкретные примеры операций см. в примерах кода в описании каждой функции.
Обзор методов и свойств (подробное использование и примеры приведены ниже):
Цитировать:
CreatConn генерирует строку подключения к базе данных
Oc устанавливает соединение с базой данных
Объект совместного выпуска
OpenConn открывает соединение с базой данных по умолчанию
CloseConn закрывает соединение с базой данных по умолчанию.
Свойство dbCtrl.dbConn получает соединение с базой данных, значение по умолчанию — Conn.
Свойство dbCtrl.dbErr, доступное только для чтения, выводит записанное сообщение об ошибке.
Свойство dbCtrl.Version, только для чтения, информация о версии программы
dbCtrl.AutoId метод, автоматически получает уникальный серийный номер
dbCtrl.GetRecord для получения набора записей, соответствующего условиям
Метод dbCtrl.GetRecordBySql получает набор записей на основе оператора sql.
Метод dbCtrl.GetRecordDetail, основанный на подробных данных указанной записи.
dbCtrl.AddRecord метод, добавить новую запись
Метод dbCtrl.UpdateRecord обновляет записи в соответствии с указанными условиями.
dbCtrl.DeleteRecord метод, удаляет записи, соответствующие условиям
Метод dbCtrl.ReadTable получает содержимое других полей записи на основе заданных условий.
dbCtrl.C, закройте объект набора записей
dbCtrl.wGetRecord,
dbCtrl.wAddRecord,
dbCtrl.wUpdateRecord,
dbCtrl.wDeleteRecord Эти четыре метода представляют собой операторы sql, которые получают соответствующие операции (перед которыми стоит w).
Соглашение о параметрах:
Поскольку ASP не имеет объекта Arguments и не может использовать динамические параметры, в коде этого класса для достижения такого эффекта используется Array. Некоторые параметры в этом классе могут использовать массивы (как указано в описании параметра), но при использовании массивов следует соблюдать следующий формат:
Массив("Поле1:Значение1", "Поле2:Истина", "Поле3:100")
Да, это немного похоже на формат json. Если задействованы переменные, то это так:
Массив («Поле1:» и Значение1, «Поле2:» и Значение2, «Поле3:» и Значение3)
Можно сказать, что почти весь контент, связанный с полями базы данных в этом классе, может использовать указанный выше формат массива для установки условий или получения контента. Самая большая особенность здесь заключается в том, что вам не нужно учитывать тип поля при его использовании. Просто укажите после поля двоеточие, а затем соответствующее значение. Если вы часто пишете ASP-программы вручную, вы скоро почувствуете прелесть использования этого метода. Помимо типа данных, здесь также очень удобно добавлять и удалять условия в любое время. Не беда, если вы еще не понимаете, как его использовать, ниже приведено множество примеров, иллюстрирующих эту проблему.
На самом деле инкапсулировать операции с базой данных ASP нетрудно. Я полагаю, что вы уже создавали подобный код или заимствовали инкапсулированный код других людей. Но, как всем известно, если при использовании инкапсулированного кода возникает ошибка, отладка становится хлопотным делом. Вообще говоря, чем проще инкапсулированная операция, тем сложнее будет отладка. Когда я писал эти коды, я изо всех сил старался продумать, как устранять ошибки, если что-то пойдет не так. Максимально упрощая код для работы пользователей с базой данных, я могу в любое время выводить операторы SQL для устранения ошибок.
Наконец, следует отметить, что операции с базой данных ASP, рассматриваемые в этой статье, не подходят для больших данных. Как вы знаете, для работы с большими данными лучше использовать хранимые процедуры. В будущем я рассмотрю работу хранимых процедур. . Также инкапсулированный. Существует также проблема эффективности. Если вы хотите добиться высокой эффективности, вам все равно следует рассмотреть COM+ при использовании ASP. Итак, эта категория подходит для малых и средних проектов ASP.
Хорошо, вот подробная инструкция по применению:
один. Подключение к базе данных
Учитывая привычки большинства людей, для подключения к базе данных используется общедоступный процесс, поэтому каждому необходимо изменить его в коде. Если вы уже установили соединение с базой данных, просто закомментируйте эти строки. В коде встроены четыре метода подключения к базе данных: MSSql, Access, MySQL и Oracle. Конечно, вы также можете добавлять или удалять их в исходном коде. Изменить пример:
Dim a: a = CreatConn(0, «TestData», «localhost», «имя пользователя», «пароль пользователя»)
Dim b : b = CreatConn(1, "Data/%TestDb%.mdb", "", "", "")
Поясним: первый параметр может быть строкой. Если вы используете Access, вы можете ввести как относительный, так и абсолютный путь во втором параметре. Если у вас есть пароль, вы также можете ввести его в пятый параметр, например:
Dim c : c = CreatConn("ACCESS", "E:/MyWeb/Data/%TestDB%.mdb", "", "", "mdbpassword")
Связанные функции:
Прототип: CreateConn(dbType, strDB, strServer, strUid, strPwd)
Функция: Установить строку подключения к базе данных.
Возвращаемое значение: строка
параметр:
dbType: Целочисленный или строковый тип базы данных подключения.
(0 или «MSSQL») — Microsoft SQL Server
(1 или «ДОСТУП») — Microsoft Office Access
(2 или «MYSQL») — MySQL-сервер
(3 или «ORACLE») — Сервер Oracle
strDB: строковое имя или адрес базы данных (Access может использовать абсолютные или относительные пути).
strServer: строковый адрес сервера базы данных. Для доступа оставьте это поле пустым.
strUid: строковое имя пользователя базы данных. Для Access оставьте это поле пустым.
strPwd: строковый пароль базы данных.
Прототип: Oc(connStr)
Функция: Открытое соединение с базой данных
Возвращаемое значение: Объект подключения к базе данных объектов.
параметр:
connStr: строка строки подключения к базе данных, созданная функцией CreateConn.
Прототип: Co(obj)
Функция: закрыть объект
параметр:
obj: Object Имя объекта, который необходимо закрыть.
Прототип: OpenConn
Функция: откройте соединение с базой данных по умолчанию и автоматически создайте объект соединения с именем Conn.
Параметры: нет
Прототип: CloseConn
Функция: Закройте объект подключения к базе данных по умолчанию с именем Conn.
Параметры: нет
2. Операции с базой данных
Ниже приводится описание функций этого класса операций с базой данных. Его следует рассматривать как руководство. Ознакомьтесь с примерами приложений.
Прототип: dbCtrl.dbConn(objConn)
Функция: Получить объект подключения к базе данных
параметр:
objConn: Object Объект подключения к базе данных, который был установлен.
Пример:
Dim db: Set db = Новый DbCtrl
db.dbConn = Oc(CreatConn(1,"E:/WebSite/MySite/Data/%TestDb%.mdb","","",""))
Со(дБ)
Описание: Этот атрибут является необязательным. Если этот атрибут не указан, подключением к данным по умолчанию является объект подключения к базе данных с именем Conn на странице.
Прототип: dbCtrl.AutoID(TableName)
Функция: Автоматическое получение уникального серийного номера (автоматическая нумерация)
Возвращаемое значение: целое число
параметр:
TableName: String Имя таблицы данных, уникальный серийный номер которой необходимо получить.
Пример:
Тусклый новый идентификатор
newId = db.AutoId("Тестовая таблица")
Response.Write(новыйИд)
Прототип: dbCtrl.GetRecord(TableName,FieldsList,Condition,OrderField,ShowN)
Функция: Получить набор записей, соответствующий условиям
Возвращаемое значение: объект набора записей объекта.
параметр:
TableName: имя строковой таблицы.
FieldsList: имена строковых полей, разделенные запятыми. Оставьте пустым, чтобы отобразить все поля.
Условие: условие запроса строки или массива. Если это массив, он должен соответствовать предыдущему соглашению о параметрах.
orderField: метод сортировки строк.
ShowN: Integer получает количество записей, что эквивалентно выбору Top N в SQL.
Пример:
Димры
Set rs = db.GetRecord("TestTable","fId,fName,fAge","fSex='Male' And IsActive = 1","fName Asc", 0)
Пока не rs.eof
Response.Write ("Имя:" & rs(1) & "Возраст:" & rs(2) & "<br />")
rs.movenext()
Венд
дб.C(rs)
В приведенном выше примере указание условий в следующем формате массива эквивалентно:
Set rs = db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:Male","IsActive:1"), "fName Asc", 0)
Кроме того, вы можете использовать следующий оператор для просмотра оператора sql, созданного этой функцией:
Response.Write(db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:Male","IsActive:1"), "fName Asc", 0))
Как видите, просто добавьте w перед исходной функцией.
Прототип: dbCtrl.GetRecordBySQL(strSelect)
Функция: получить набор записей на основе оператора sql.
Возвращаемое значение: объект набора записей объекта.
параметр:
strSelect: строковый оператор SQL, используемый для создания набора записей.
Пример:
Димры
Set rs = db.GetRecordBySQL("Выберите a.Id, a.LastName, b.Group From User a InnerJoin Depart b On a.GroupId = b.GroupId")
«Ваш код здесь…
дб.C(rs)
Прототип: dbCtrl.GetRecordDetail(TableName, Condition)
Функция: На основе подробных данных указанной записи.
Возвращаемое значение: объект набора записей объекта.
параметр:
TableName: имя строковой таблицы.
Условие: условие запроса строки или массива. Если это массив, он должен соответствовать предыдущему соглашению о параметрах.
Пример:
Дим rs,Id
Идентификатор = Request.QueryString("id")
Установите rs = db.GetRecordDetail("TestTable","Id=" & id)
«Ваш Кодекс здесь…
дб.C(rs)
Описание: Как вы уже можете видеть, чаще всего это используется для открытия подробной страницы (например, страницы с новостями).
Прототип: dbCtrl.AddRecord(TableName, ValueList)
Функция: Добавить новую запись
Возвращаемое значение: идентификационный номер новой записи (успех) или 0 (ошибка).
параметр:
TableName: имя строковой таблицы.
ValueList: поля массива и значения, вставленные в таблицу, могут быть только массивами и должны соответствовать предыдущим соглашениям о параметрах.
Пример:
Тусклое имя fName, fSex, fWorkYear, fBirth
fName = "Ван Эртан"
fSex = "мужской"
fWorkYear = 12
fРождение = Cдата("23.10.1981")
Тусклый результат
result = db.AddRecord("TestTable",Array("Name:"&fName, "Sex:"&fSex, "WorkYear:"&fWorkYear, "Birthday:"&fBirth, "IsActive:True"))
Если результат<>0 Тогда
Response.Write("Запись добавлена успешно! Идентификатор автоматической нумерации этой записи: "& result)
Конец, если
Видите ли, вам действительно не нужно учитывать тип поля.
Если вы хотите более наглядно видеть поля и значения в коде, вы также можете написать это так, но это зависит от ваших предпочтений:
результат = db.AddRecord("TestTable",Array("Name:" & fName,_
"Секс:" и fSex,_
«РабочийГод:» & fWorkYear,_
«День рождения:» & fРождение,_
"IsActive:True"))
Кроме того, вы можете использовать следующий оператор для просмотра оператора sql, созданного этой функцией:
Response.Write(db.wAddRecord("TestTable",Array("Name:"&fName, "Sex:"&fSex, "WorkYear:"&fWorkYear, "Birthday:"&fBirth, "IsActive:True")))
Примечание. Возвращаемое значение идентификатора использует относительно глупый метод, который не гарантирует точности при большом объеме одновременных данных. Используйте его с осторожностью.
Прототип: dbCtrl.UpdateRecord(TableName, Condition, ValueList)
Функция: обновление записей на основе заданных условий.
Возвращаемое значение: 1 (успех) или 0 (ошибка).
параметр:
TableName: имя строковой таблицы.
Условие: условие обновления строки или массива. Если это массив, он должен соответствовать предыдущему соглашению о параметрах.
ValueList: обновленные поля и значения строки или массива. Если это массив, он должен соответствовать предыдущему соглашению о параметрах.
Пример:
Тусклое имя fName, fWorkYear
fName = "Ван Сантан"
fWorkYear = 10
Тусклый результат
result = db.UpdateRecord("TestTable", "UId = 1308", Array("Name:"&fName, "WorkYear:"&fWorkYear))
Если результат<>0 Тогда
Response.Write("Обновление данных успешно!")
Конец, если
Кроме того, вы можете использовать следующий оператор для просмотра оператора sql, созданного этой функцией:
Response.Write(db.wUpdateRecord("TestTable", "UId = 1308", Array("Name:"&fName, "WorkYear:"&fWorkYear)))
Прототип: dbCtrl.DeleteRecord(TableName,IDFieldName,IDValues)
Функция: Удалить записи, соответствующие условиям.
Возвращаемое значение: 1 (успех) или 0 (ошибка).
параметр:
TableName: имя строковой таблицы.
IDFieldName: String Имя поля идентификатора таблицы.
IDValues: условие удаления строки или массива, которое может представлять собой несколько идентификационных номеров, разделенных запятыми. Если это массив, он должен соответствовать предыдущему соглашению о параметрах.
Пример:
Тусклые идентификаторы, результат
ids = Request.Form("selectid") 'Можно предположить, что здесь получены значения 12, 34, 256, 314 (значения, передаваемые флажком, такие)
результат = db.DeleteRecord("TestTable", "UId", ids)
Если результат<>0 Тогда
Response.Write("Удаление данных успешно!")
Конец, если
Конечно, вы также можете указать другие условия, используя строки или массивы, например:
result = db.DeleteRecord("TestTable", "UId", "IsActive = 0 And FirstName = 'Tom'")
Кроме того, вы можете использовать следующий оператор для просмотра оператора sql, созданного этой функцией:
Response.Write(db.wDeleteRecord("TestTable", "UId", ids))
Прототип: dbCtrl.ReadTable(TableName, Condition, GetFieldNames)
Функция: получить содержимое других полей записи на основе заданных условий.
Возвращаемое значение: строка (GetFieldNames — одно поле) или массив (GetFieldNames — несколько полей).
параметр:
TableName: имя строковой таблицы.
Условие: условие запроса строки или массива. Если это массив, он должен соответствовать предыдущему соглашению о параметрах.
GetFieldNames: строка Одно имя поля или несколько имен полей, разделенных запятыми.
Пример:
Тусклый uid, результат
uid = rs("postid") 'Предположим, что это значение идентификатора пользователя в наборе записей на странице.
result = db.ReadTable("UserTable","UId=" & uid, "UserName")
Response.Write("Издатель:" и результат)
Я должен сказать, что в реальных приложениях эта функция, вероятно, используется чаще всего. То, что вы видите выше, является очень распространенным примером. Из одного значения можно получить другое поле в другой таблице, значение которого равно этому значению. немного сложно произнести, но вот что это значит). Следующий пример покажет вам, как получить несколько соответствующих значений на основе этого значения.
Тусклый uid, результат
uid = rs("postid") 'Предположим, что это значение идентификатора пользователя в наборе записей на странице.
result = db.ReadTable("UserTable","UId=" & uid, "UserName,UserSex,UserAge")
Response.Write("Издатель:" & result(0) & "<br /> Пол: " & result(1) & "<br /> Возраст: " &result(2))
Как видите, все очень просто. В результате ввода нескольких имен полей образуется массив.
Прототип: dbCtrl.C(objRs)
Функция: Закрыть объект набора записей.
параметр:
objRs: Object Объект набора записей на странице.
Пример:
Димры
Set rs = db.GetRecordDetail("TestTable","Id=123" )
«Ваш Кодекс здесь…
дб.C(rs)
Эта функция использовалась во многих примерах выше, поэтому я не буду ее подробно объяснять. Она эквивалентна rs.close: set rs = Nothing.
clsDbctrl.rar