Функция _SQLite_Open

 ↑  ←  Описание функции


_SQLite_Open

Открывает/создает базу данных SQLite

#include <SQLite.au3>
_SQLite_Open([$sDatabase_Filename = ":memory:" [, $iAccessMode [, $iEncoding]]])

Параметры

$sDatabase_Filename [необязательный] Файл базы данных, по умолчанию будет открыта базы данных в памяти.
$iAccessMode [необязательный] Флаги режим доступа. По умолчанию $SQLITE_OPEN_READWRITE + $SQLITE_OPEN_CREATE
$iEncoding [необязательный] Флаг режима кодировки, используется только во время создания. По умолчанию $SQLITE_ENCODING_UTF8

Возвращаемое значение

Успех:Возвращает дескриптор базы данных.
Ошибка:Возвращает 0.
@error:-1 - SQLite сообщил об ошибке (Проверьте значение @extended)
1 - Ошибка вызова 'sqlite3_open_v2' SQLite API
2 - Ошибка преобразования имени файла в UTF-8
3 - _SQLite_Startup ещё не вызывался
@extended:Возвращаемое значение можно сравнить с константами $SQLITE_ *

Примечания

Нет необходимости хранить дескриптор базы данных, кроме случая, если необходимо иметь несколько открытых баз данных одновременно.
Функции, которые используют дескриптор, по умолчанию используют последнюю открытую.

Для создания базы данных в кодировке UFT-16 просто создайте его с $iEncoding=$SQLITE_ENCODING_UTF16.

Память, временные и постоянные базы данных могут быть открыты:
    $hDb = _SQLite_Open() ; открывает временную личную базу данных в памяти
    $hDb = _SQLite_Open(Default, ...) ; так же
    $hDb = _SQLite_Open(':memory:', ...) ; так же
   
    $hDb = _SQLite_Open('', ...) ; открывает временную личную базу данных на диске
   
    $hDb = _SQLite_Open('abc.db', ...) ; открывает или создает постоянную базу данных на диске для совместного использования с именем 'abc.db'

В случае, если вы настаиваете вводя себя в заблуждение:
    $hDb = _SQLite_Open('./:memory:', ...) ; открывает или создает постоянную базу данных на диске для совместного использования с именем ':memory:'

В противоположность постоянным базам данных на диске, база в памяти и временная не могут быть доступными, ни быть использованы для IPC (Inter Process Communication) и будут удалены в конце подключения.

См. также

_SQLite_Close

Пример

#include <SQLite.au3>
#include <SQLite.dll.au3>

_SQLite_Startup()
If @error Then
    MsgBox(16, "Ошибка SQLite", "Не удалось загрузить SQLite3.dll")
    Exit -1
EndIf
ConsoleWrite("Версия библиотеки SQLite = " & _SQLite_LibVersion() & @CRLF)

_SQLite_Open() ; создает базу данных в памяти и не использует дескриптор для ссылки на неё
If @error Then
    MsgBox(16, "Ошибка SQLite", "Не удалось создать базу данных в памяти!!")
    Exit -1
EndIf
_SQLite_Close()

Local $hMemDb = _SQLite_Open() ; создает базу данных в памяти
If @error Then
    MsgBox(16, "Ошибка SQLite", "Не удалось создать базу данных в памяти!")
    Exit -1
EndIf

Local $hTmpDb = _SQLite_Open('') ; создает временную базу данных на диске
If @error Then
    MsgBox(16, "Ошибка SQLite", "Не удалось создать временную базу данных на диске!")
    Exit -1
EndIf

Local $sDbName = _TempFile()
Local $hDskDb = _SQLite_Open($sDbName) ; открывает постоянную базу данных на диске
If @error Then
    MsgBox(16, "Ошибка SQLite", "Не удалось открыть постоянную базу данных на диске!")
    Exit -1
EndIf

; вы можете использовать 3 базы данных по мере необходимости, ссылаясь на их дескрипторы

; закрывает созданные нами базы данных, порядок не важен
_SQLite_Close($hTmpDb) ; временная база данных будет удалена автоматически при закрытии
_SQLite_Close($hDskDb) ; база данных в обычном файле может быть открыта позже
_SQLite_Close($hMemDb)

; удаляет созданный файл базы данных
FileDelete($sDbName)

_SQLite_Shutdown()