Шаг 53 - Объект Database

Описание
Объект Database представляет открытую базу данных.

Замечания
Работа с открытой базой данных ведется с помощью объекта Database и его методов и свойств. Для баз данных любого типа пользователь имеет следующие возможности:

  1. Использовать метод Execute для запуска запроса на изменение.
  2. С помощью свойства Connect установить подключение к источнику данных ODBC.
  3. С помощью свойства QueryTimeout ограничить время ожидания выполнения запроса к источнику данных ODBC.
  4. Использовать свойство RecordsAffected для определения количества записей, измененных в запросе на изменение.
  5. Использовать метод OpenRecordset для выполнения запроса на выборку и создания объекта Recordset.
  6. С помощью свойства Version определить версию ядра базы данных, в которой была создана база данных.

В базах данных Microsoft Jet (файлы .mdb) можно использовать другие методы, свойства и семейства для работы с объектом Database, а также для создания, изменения или получения информации о содержащихся в базе данных таблицах, запросах и связях. Например, пользователь имеет возможность:

  1. Использовать методы CreateTableDef и CreateRelation для создания таблиц и связей, соответственно.
  2. Использовать метод CreateProperty для определения новых свойств объекта Database.
  3. Использовать метод CreateQueryDef для создания описания постоянного или временного запроса.
  4. Использовать методы MakeReplica, Synchronize и PopulatePartial для создания и синхронизации полных или частичных реплик базы данных.
  5. С помощью свойства CollatingOrder указать язык, по правилам которого выполняется сортировка символьных полей.

    В рабочей области ODBCDirect пользователь имеет возможность:
    1. С помощью свойства Connection получить ссылку на объект Connection, соответствующий объекту Database.
    При вызове метода CreateDatabase создается постоянный объект Database, который автоматически добавляется в семейство Databases, что приводит к его сохранению на диске.
    При использовании метода OpenDatabase нет необходимости указывать объект DBEngine.
    Открытие базы данных, содержащей присоединенные таблицы, не приводит к автоматическому установлению связей с указанными внешними файлами или источниками данных ODBC, подключенными к ядру Microsoft Jet. В этом случае требуется либо указать ссылку на соответствующие таблице объекты TableDef или Field, либо открыть для таблицы объект Recordset. Если связи установить не удается, возникает перехватываемая ошибка. К возникновению перехватываемой ошибки приводит также отсутствие необходимых разрешений на доступ к базе данных или попытка установить связь с базой данных, открытой другим пользователем для монопольного доступа.
    Допускается также непосредственное открытие с помощью метода OpenDatabase внешней базы данных (такой как FoxPro, dBASE или Paradox) вместо открытия базы данных с ядром Microsoft Jet с последующим присоединением внешних таблиц.
    Не рекомендуется непосредственно открывать объект Database для источника данных ODBC, подключенного к ядру Microsoft Jet, такого как Microsoft SQL Server, поскольку запрос возвращает данные медленнее, чем присоединенные таблицы. При открытии объекта Database для внешних бах данных с драйверами ISAM, таких как FoxPro или Paradox, проблем с быстродействием не возникает.
    При завершении выполнения процедуры, в которой описан объект Database, этот локальный объект Database закрывается вместе со всеми открытыми объектами Recordset. Любые незавершенные изменения при этом теряются, а незавершенные транзакции свертываются без возникновения перехватываемой ошибки. Чтобы избежать потери изменений пользователь должен в явном виде до выхода из процедуры завершить все транзакции или операции редактирования и закрыть объекты Recordset и объекты Database, описанные в этой процедуре на локальном уровне.
    После применения к объекту Workspace одного из методов управления транзакциями (BeginTrans, CommitTrans или Rollback) эти транзакции применяются ко всем базам данных, открытым в объекте Workspace, в котором был открыт этот объект Database. Для того чтобы выполнить независимую транзакцию, следует предварительно открыть дополнительный объект Workspace, а затем открыть в этом объекте Workspace еще один объект Database.
    Можно открыть источник данных или базу данных несколько раз, создавая повторяющиеся имена в семействе Databases. После этого следует присвоить объекты Database объектным переменным и ссылаться на объекты по именам переменных.

    Пример
    Следующая программа создает объект Database и открывает существующий объект Database в стандартном объекте Workspace. Затем печатается семейство Databases и семейство Properties каждого объекта Database.

    Sub DatabaseObjectX()
    
    	Dim wrkJet As Workspace
    	Dim dbsNorthwind As Database
    	Dim dbsNew As Database
    	Dim dbsLoop As Database
    	Dim prpLoop As Property
    
    	Set wrkJet = CreateWorkspace("JetWorkspace", "admin", "", dbUseJet)
    
    	' Проверяет, что нет файла, имя которого совпадает с именем
    	' новой базы данных.
    	If Dir("NewDB.mdb") <> "" Then Kill "NewDB.mdb"
    
    	' Создает новую базу данных с указанной
    	' языковой настройкой.
    
    	Set dbsNew = wrkJet.CreateDatabase("NewDB.mdb", dbLangGeneral)
    	Set dbsNorthwind = wrkJet.OpenDatabase("Борей.mdb")
    
    	' Отображает семейство Databases.
    	For Each dbsLoop In wrkJet.Databases
    		With dbsLoop
    			Debug.Print "Свойства " & .Name
    			' Отображает семейство Properties каждого
    			' объекта Database.
    			For Each prpLoop In .Properties
    				If prpLoop <> "" Then Debug.Print "    " &  prpLoop.Name & " = " & prpLoop
    
    			Next prpLoop
    		End With
    	Next dbsLoop
    
    	dbsNew.Close
    	dbsNorthwind.Close
    	wrkJet.Close
    End Sub
    

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 25.02.2002