Главная » 2009 Ноябрь 6 » Программное создание базы данных
08:30 Программное создание базы данных |
' Введение Часто нужно создать новую базу данных по ходу выполнения программы. Как же это сделать? Об этом будет рассказано в статье. Создание базы данных производится с помощью библиотеки DAO. Для начала нужно подключить эту библиотеку. Для этого в меню Project|References отметьте пункт "Microsoft DAO 3.6 Objects Library". В составе Visual Basic 6.0 поставляется библиотека версии 3.6. Если у Вас более ранняя версия - отметьте её, особых различий нет. ' Создание копии имеющейся базы данных Сделать копию имеющейся базы данных с сохранением структуры и данных относительно просто. Во-первых, можно просто скопировать файл базы данных: FileCopy "C:\db1.mdb", "C:\db2.mdb" А во-вторых, для этого можно использовать метод CompactDatabase объекта верхнего уровня DBEngine библиотеки DAO. Преимущество использования этого метода перед простым копированием файла состоит в том, что база не только копируется, но и производится сжатие (физическое удаление всех удаленных записей) и дефрагментация базы данных. А это увеличивает скорость работы с базой данных и уменьшает её размер. DBEngine.CompactDatabase "C:\db1.mdb", "C:\db2.mdb" Также при использовании метода CompactDatabase можно изменить версию базы данных, изменить пароль базы данных и установить язык базы. ' Создание новой базы данных Для создания новой базы тоже есть два способа. Если Вам заранее известна структура базы данных (кол-во и имена таблиц, полей, индексов), то можно при создании программы подключить файл ресурсов с базой данных, имеющей нужную структуру. Затем, когда нужно создать базу данных с этой структурой, извлекаем её из файла ресурсов и сохраняем на диск в нужном месте: Dim a() As Byte Dim fn As Integer a() = LoadResData(101, "CUSTOM") fn = FreeFile Open "C:\db1.mdb" For Binary Access Write As fn Put #fn, , a() Close #fn А если структура базы данных заранее неизвестна? Тогда используем более гибкий способ. Начнём с того, что создадим пустую базу. Для этого у объекта DBEngine имеется метод CreateDatabase. Он создает новый экземпляр объекта Database, сохраняет его на диск и возвращает открытый объект. Обязательными параметрами этого метода являются name (определяет путь и имя создаваемой БД) и locale (параметры). В параметре locale обязательно нужно указать язык БД. Он определяется константами, имя которых начинается на dbLang. Русскому языку соответствует константа dbLangCyrillic. Dim db As DAO.Database Set db = DAO.CreateDatabase ("C:\test.mdb", dbLangCyrillic) Также можно установить пароль на создаваемую БД. Для этого к параметру locale необходимо добавить строку ";pwd=ВашПароль" Set db = DAO.CreateDatabase ("C:\test.mdb", dbLangCyrillic & ";pwd=Бейсик") Параметр options необязательный. Он позволяет изменить версию БД и зашифровать БД. Set db = DAO.CreateDatabase ("C:\test.mdb", dbLangCyrillic, dbVersion30 & dbEncrypt) Список констант, которые можно использовать в параметре options: Константа Значение Описание dbEncrypt 2 Для создания зашифрованной БД. dbVersion10 8 Для создания БД версии 1.0. dbVersion11 16 Для создания БД версии 1.1. dbVersion20 32 Для создания БД версии 2.0. dbVersion30 64 Для создания БД версии 3.0 (совместима с версией 3.5). База данных создана. Теперь нужно заполнить её структуру (создать таблицы, поля, индексы). Для этого воспользуемся такими объектами библиотеки DAO, как TableDef (этот объект содержит таблицу), Field (содержит поле) и Index (содержит индекс). Для начала разберёмся с таблицами. Итак, сначала создаём таблицу. Для этого воспользуемся методом CreateTableDef объекта Database. Он создаёт новый экземпляр объекта TableDef и возвращает его нам. Этот метод имеет 4 параметра. Все они необязательные. Первый параметр - name указывает имя создаваемой таблицы. Dim tbd As DAO.TableDef Set tbd = db.CreateTableDef ("Таблица1") Параметр attributes позволяет задать атрибуты таблицы. Для того чтобы создать копию имеющейся таблицы нужно установить параметр source равным имени таблицы - источника данных. Эта таблица обязательно должна присутствовать в базе данных. Dim tbd As DAO.TableDef Set tbd = db.CreateTableDef ("Таблица2",, "Таблица1") Четвёртый параметр connect используется при создании связанных таблиц. В данной статье это рассмотрено не будет. Созданная таблица пока ещё не присутствует в базе данных. Для добавления таблицы в БД нужно добавить её в коллекцию TableDefs. Но это мы сделаем только после того, как будут созданы все поля и индексы. Добавим в таблицу поля. Поля создаются методом CreateField объекта TableDef. Он имеет 3 параметра. Параметр name устанавливает имя создаваемого поля. Параметр type устанавливает тип поля. Он может принимать значения одной из следующих констант: Константа Значение Описание dbBigInt 16 Большой целочисленный. dbBinary 9 Двоичные данные. dbBoolean 1 Логический. Может принимать значения True/False. dbByte 2 Байт. Это число от 0 до 255. dbChar 18 Текстовый фиксированной длины. Длина устанавливается параметром size. dbCurrency 5 Денежный. Может содержать до 15 знаков слева от запятой и до 4 справа. dbDate 8 Дата и время. dbDecimal 20 Десятичный. dbDouble 7 Числовой тип двойной точности. dbFloat 21 С плавающей точкой. dbGUID 15 128 битный глобальный универсальный идентификатор. dbInteger 3 Целочисленный. dbLong 4 Длинный целочисленный. dbLongBinary 11 Длинные двоичные данные. dbMemo 12 В поле этого типа можно хранить любые данные. dbNumeric 19 Числовой. dbSingle 6 Числовой тип одинарной точности. dbText 10 Текстовый. Длина устанавливается параметром size. Может содержать больше 255 символов. dbTime 22 Время. dbTimeStamp 23 Дата и время. dbVarBinary 17 Двоичный фиксированной длины. Но из этих констант с базами MSAccess работают только dbBoolean, dbByte, dbInteger, dbLong, dbCurrency, dbSingle, dbDouble, dbDate, dbText, dbLongBinary, dbGUID и dbMemo. Остальные константы припасены для баз данных другого формата (под управлением ODBCDirect). Параметр size определяет размер поля. Dim fld As DAO.Field Set fld = tdf.CreateField ("Поле1", dbText, 50) Все аргументы метода CreateField необязательные, поскольку задать имя, тип и размер можно после создания поля с помощью соответствующих свойств. Set fld = tdf.CreateField () fld.Name = "Поле" fld.Type = dbText fld.Size = 100 После создания поля нужно добавить его в коллекцию Fields объекта TableDef. Для этого используем метод Append коллекции. tdf.Fields.Append fld Поле добавлено. Можем создать ещё несколько полей. Set fld = tdf.CreateField ("Поле2", dbInteger) tdf.Fields.Append fld Set fld = tdf.CreateField ("Поле3", dbBoolean) tdf.Fields.Append fld Поля созданы. Осталось создать индексы. Для создания индекса используется метод CreateIndex объекта TableDef. Он создаёт экземпляр объекта Index и возвращает его. Метод CreateIndex имеет всего один параметр - name. Он устанавливает имя создаваемого индекса. Dim inx As DAO.Index Set inx = tdf.CreateIndex ("Index1") Добавим в индекс поля. Создадим поле с помощью метода CreateField объекта Index и добавим поле в его коллекцию Fields. В качестве аргумента name метода CreateField задаём имя имеющегося поля, которое добавляем в индекс. Set fld = inx.CreateField ("Поле2") inx.Fields.Append fld Всё готово. Теперь нужно добавить таблицу в коллекцию TableDefs и дело в шляпе! db.TableDefs.Append tdf db.TableDefs.Refresh Теперь, когда база данных уже создана, закрываем объекты и освобождаем память. rs.Close db.Close Set rs = Nothing Set inx = Nothing Set fld = Nothing Set tdf = Nothing Set db = Nothing ' Заключение База данных создана. В ней появилась таблица, поля, индекс. Теперь остаётся заполнить её. Как это сделать я рассказывать не буду. Автор: Павел Сурменок |
|
Всего комментариев: 0 | |