Sign in Join
Wiki copytemporary

Databases/ru: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11Эта страница является введением в темы [[Lazarus Faq/ru|Lazarus]] и **database**. В следующей таблице представлен обзор поддерживаемых баз данных.
22
33Должны быть установлены только компоненты базы данных, для которых есть клиентские библиотеки (если базе данных нужны клиентские библиотеки), иначе Lazarus может не запуститься из-за отсутствующих файлов. Затем Lazarus необходимо переустановить, так как удаление компонента невозможно.
44
55### Поддерживаемые базы данных
66
77| База данных | Имя пакета | Нужна клиентская библиотека? | Нужен сервер? | Поддерживаемые версии | Поддерживаемые платформы |
88|----|----|----|----|----|----|
99| [**Advantage**](http://www.advantagedatabase.com/) | TAdsDataSet | Да | Нет | 10.1 и больше | i386: Linux, Win32 |
1010| **DBase** | [[Lazarus Tdbf Tutorial|DBFLaz]] | Нет | Нет | III+, IV, VII | Все |
1111| **TurboPower FlashFiler** | [[FlashFiler]] | Нет | Нет | \- | Win 32, (win64?) |
1212| **In memory** | [[How to write in-memory database applications in Lazarus/FPC/ru|memds]] | Нет | Нет | \- | Все |
1313| **In memory** | [[How to write in-memory database applications in Lazarus/FPC/ru|bufdataset]] | Нет | Нет | \- | Все |
1414| [**Firebird**](http://www.firebirdsql.org/) | [[Firebird/ru|SQLdb]] | Да | Зависит от<sup>1</sup> | 1 - 2.5 | i386: Linux, Win32 |
1515| **(Visual) FoxPro** | [[Lazarus Tdbf Tutorial|DBFLaz]] | Нет | Нет | 2.0, 2.5, 3.0 (не полностью) | Все |
1616| [**Interbase**](http://www.embarcadero.com/products/interbase-smp) | [[Firebird/ru|SQLdb]] | Да | Да | 4 - 6 | i386: Linux, Win32 |
1717| [**Microsoft SQL Server**](http://www.microsoft.com/sqlserver/) | [[mssqlconn|SQLdb]] | Да | Да | 6- | FPC 2.6.2+. Linux, macOS, Win32, возможно *BSD, возможно Solaris<sup>2</sup> |
1818| [**MySQL**](http://www.mysql.com/) | [[mysql|SQLdb]] | Да | Да | 3.0 - 5.5 | i386: Linux, Win32 |
1919| **ODBC** | [[ODBCConn|SQLdb]] | Да | Зависит от<sup>3</sup> | 3.x | i386: Linux, Win32 |
2020| [**Oracle**](http://www.oracle.com/) | [[Oracle|SQLdb]] | Да | Да | \- | \- |
2121| **Paradox** | [[TParadoxDataSet]] | Нет | Нет | до уровня таблицы 7 (и выше ??) | Все |
2222| **Paradox** | [[TParadox]] | Да | Нет | | Win32 |
2323| [**PostgreSQL**](http://www.postgresql.org/) | [[postgresql|SQLdb]] | Да | Да | 6.6 - 8 | i386: Linux, Win32 |
2424| [**Sybase Adaptive Server Enterprise (ASE)**](http://www.sybase.com/products/databasemanagement/adaptiveserverenterprise) | [[mssqlconn|SQLdb]] | Да | Да | Любая | Linux, macOS, Win32, возможно *BSD, возможно Solaris<sup>2)</sup> |
2525| [**SQLite**](http://www.sqlite.org/) | [[sqlite|SQLdb]] | Да | Нет | sqlite3 | Все |
2626| [**SQLite**](http://www.sqlite.org/) | [[sqlite|SQLite(3)Laz]] | Да | Нет | sqlite2,sqlite3 | Все |
2727| **Text files** | sdf | Нет | Нет | \- | Все |
2828
29-<cite id="supported_db_1">[[Databases|Примечание (1):]]</cite> Вы можете использовать встроенную версию Firebird для Windows и Linux (возможно, также для macOS) или подключиться к серверу Firebird, работающему на Windows/Unix/macOS/FreeBSD/других платформах, поддерживаемых Firebird.
29+[[Databases|Примечание (1):]] Вы можете использовать встроенную версию Firebird для Windows и Linux (возможно, также для macOS) или подключиться к серверу Firebird, работающему на Windows/Unix/macOS/FreeBSD/других платформах, поддерживаемых Firebird.
3030
31-<cite id="supported_db_2">[[Databases|Примечание (2):]]</cite> Эти коннекторы используют библиотеку FreeTDS в качестве драйвера. Документация FreeTDS указывает, что она должна быть построена как минимум на этих платформах. Версии Windows для x86 и x64 можно загрузить, например, отсюда [отсюда](ftp://ftp.freepascal.org/fpc/contrib/windows/dblib_x32.zip)(х32) и [отсюда](ftp://ftp.freepascal.org/fpc/contrib/windows/dblib_x64.zip)(х64)
31+[[Databases|Примечание (2):]] Эти коннекторы используют библиотеку FreeTDS в качестве драйвера. Документация FreeTDS указывает, что она должна быть построена как минимум на этих платформах. Версии Windows для x86 и x64 можно загрузить, например, отсюда [отсюда](ftp://ftp.freepascal.org/fpc/contrib/windows/dblib_x32.zip)(х32) и [отсюда](ftp://ftp.freepascal.org/fpc/contrib/windows/dblib_x64.zip)(х64)
3232
33-<cite id="supported_db_3">[[Databases|Примечание (3):]]</cite> Этот номер версии относится к стандарту ODBC, а не к номеру версии драйвера или диспетчера драйверов. Для большинства СУБД существуют драйверы ODBC 3.x.
33+[[Databases|Примечание (3):]] Этот номер версии относится к стандарту ODBC, а не к номеру версии драйвера или диспетчера драйверов. Для большинства СУБД существуют драйверы ODBC 3.x.
3434
3535## Привязка к клиентским библиотекам баз данных
3636
3737Если вы хотите использовать одну из баз данных, которая требует клиентских библиотек, эти библиотеки должны быть установлены. Не только на компьютере, на котором вы программируете, но и на компьютерах, на которых должно работать приложение. Обратите внимание, что некоторые базы данных (в частности, MySQL) работают только в том случае, если привязки, скомпилированные в приложении, имеют ту же версию, что и у установленных библиотек. Вы можете узнать, как установить эти библиотеки (.so файлы в системах * nix и .dll в Windows) на веб-сайте разработчиков баз данных. Модули привязки можно найти в каталоге packages/base в fpc-sources. Они в основном состоят из клиентских API-вызовов, таких как mysql_connect_database, которые совершенно разные для каждой базы данных. Можно писать приложения баз данных, используя эти модули, но обычно это гораздо более трудоемко и критично к ошибкам, чем использование компонентов DB-модуля Lazarus.
3838
3939Большинство из этих пакетов привязок жестко связаны с клиентскими библиотеками. Это означает, что, если приложение скомпилировано с одним из этих модулей, все приложение не может быть связано, если клиентские библиотеки недоступны на рабочей станции. В свою очередб, это означает, что исполняемый файл вашей программы не будет сгенерирован, если на вашем компьютере не установлен, например, клиент MySQL, и вы используете в своей программе модуль mysql4.pp. Если вам удастся скомпилировать программу на компьютере, на котором установлены клиентские библиотеки MySQL, она все равно не запустится ни на одном другом компьютере без соответствующих клиентских библиотек MySQL. Другими словами: для этих баз данных вам нужно установить клиентские библиотеки на компьютере разработчика и установить эти клиентские библиотеки вместе с вашим приложением.
4040
4141Чтобы избежать таких проблем, некоторые пакеты также могут динамически подключаться к библиотекам. Перед выполнением каких-либо вызовов этих библиотек устройство должно быть 'инициализировано'. Эта инициализация завершается ошибкой, если на компьютере не установлен клиент базы данных. Если программа готова использовать клиентскую библиотеку, модуль должен быть 'освобожден'.
4242
4343## Наборы данных (Dataset)
4444
4545Базы данных в Lazarus (или FreePascal) основывают свою работу на базовом классе TDataset. Этот класс представляет таблицу или результат запроса в Вашем приложении. Как и многие другие базовые классы, Вы не можете использовать TDataSet в своём приложении непосредственно, а используете только его потомков, которых довольно много. Они обеспечивают доступ к различным видам баз данных, таким как локальный dbase или текстовые файлы, а так же серверами баз данных, таких как PostgreSQL, Firebird, MySQl и т.п. Некоторые потомки TDataSet связываются непосредственно с таблицами базы данных, в то время как другие используют дополнительные компоненты или библиотеки.
4646
4747Обратитесь к странице [[Databases|базы данных]] для получения более полной информации об этом.
4848
4949Потомки Dataset, будучи не визуальными компонентами, обычно являются частью свободной библиотеки компонентов (FCL), а не библиотеки компонентов Lazarus (LCL).
5050
5151### Использование наборов данных в коде программы
5252
5353О программном доступе объясняется более подробно в [[Using Dataset and Field components|"Использование компонентов Dataset и Field"]], вот краткий обзор:
5454
5555- Используйте потомок TDataset чтобы открыть таблицу или запрос, отфильтруйте те строки, которые хотите видеть и двигайтесь от строки к строке.
5656- Используйте потомок TField для:
5757 - Доступа к общей информации о поле.
5858 - Доступа к данным текущей строки. (используя свойство AsХХХХ, например AsString, AsInteger и так далее.)
5959- Используйте для обращения к полям потомка TDatasetтак же:
6060 - Свойство Fields, к примеру Fields\[0\] для самого первого поля,
6161 - Метод FieldByName, как пример FieldByName('AGE') вернёт поле, которое в базе данных называется 'AGE'.
6262
6363См. [[Database field type|Тип поля базы данных]] для просмотра списка типов полей.
6464
6565### Использование визуальных (db-ориентированных) компонентов
6666
6767Чтобы использовать базы данных в простом, приложении Lazarus в "RAD"-стиле, обычно настраивается потомок TDataSet во время разработки и добавляются специализированные компоненты. Например:
6868
6969- Добавьте потомка dataset для выбранной Вами базы данных вместе с другими необходимыми компонентами на Вашу форму и откройте его (Установите свойство 'Active' в True).
7070- Добавьте на форму компонент TDatasource (с вкладки "Data Access") и свяжите его с датасетом (установив свойство DataSet).
7171- Добавьте компоненты отображения данных с вкладки "Data Controls" и свяжите их с компонентом DataSource (**не** dataset).
7272- Большинство компонентов связываются только с одним полем, поэтому Вам надо будет установить свойство Field для каждого такого компонента.
7373
7474Смотрите [[Databases/ru|Элементы управления данными]] ниже.
7575
7676### Рабочие состояния (Статусы) Dataset
7777
7878Наборы данных могут быть в нескольких состояниях (Статусах), которые отображаются в свойстве State. Вот какие состояния могут быть (смотрите TDataSetState в исходниках):
7979
8080| Описание | Функция |
8181|----|----|
8282| dsInactive | Набор данных закрыт, доступ к данным невозможен |
8383| dsBrowse | В этом состоянии можно просматривать набор данных, искать какие-либо значения |
8484| dsEdit | В этом состоянии можно редактировать данные в текущей строке. Изменённые значения не будут записаны, пока не применён метод Post. |
8585| dsInsert | В этом состоянии только что вставлена новая строка данных и туда можно заносить новые значения. Строка не будет записана, пока не применён метод Post. |
8686
8787Другие состояния обычно являются кратковременными и обрабатываются автоматически. Они используются внутри компонента и более сложны в коде обработки. Если Ваше приложение только просматривает данные и Вы открываете набор данных во времени разработки, то Вы можете просто проигнорировать статус, поскольку он главным образом будет dsBrowse. Однако большинство приложений будут тем или иным образом всё-таки изменять данные. Если Вы используете DB-ориентированные компоненты, то они обрабатывают эти состояния автоматически. Если Вы измените текст в компоненте (к примеру) [[TDBEdit]], то он пометит набор данных в состояние dsEdit, если только Вы уже не поставили вручную статус в dsEdit или dsInsert. Если Вы будете переходить от одной записи к другой, то та запись, которая была в состоянии dsEdit или dsInsert, автоматически выполнит метод Post, при переходе на новую строку и DataSet вернётся в состояние dsBrowse. Однако если Вы обращаетесь к набору данных в коде, то его состояние Вы должны выставлять вручную. Компонент [[TDBNavigator]] позволяет изменять статус самому пользователю.
8888
8989### UpdateStatus набора данных
9090
9191UpdateStatus определяет текущее состояние буфера записи, если обновления еще не были применены к базе данных.
9292
9393**Пример**, как определить, будет ли ApplyUpdates вставлять, обновлять или удалять данные:
9494
9595``` pascal
9696procedure QueryAfterPost(DataSet: TDataSet);
9797begin
9898 case DataSet.UpdateStatus of
9999 usUnmodified : ShowMessage('Unmodified');
100100 usModified : ShowMessage('Modified');
101101 usInserted : ShowMessage('Inserted');
102102 usDeleted : ShowMessage('Deleted');
103103 end;
104104end;
105105```
106106
107107Объяснение значений
108108
109109- usUnmodified: Запись не изменялась
110110- usModified: Запись существует в базе данных, но локально изменена
111111- usInserted: Запись еще не существует в базе данных, но вставлена локально
112112- usDeleted: Запись еще существует в базе данных, но локально удалена
113113
114114### Принятие и отмена изменения
115115
116116Если Вы редактируете или вставляете новую запись, то значения этой записи сначала помещаются в буфер. После этого:
117117
118118- Вызов метода `Dataset.Cancel` удаляет новую запись (при вставке) или или возвращает старые значения записи (при редактировании).
119119- Вызов метода `Dataset.Post` сохраняет значения (при редактировании) или новую запись (при вставке).
120120
121121В некоторых потомках Dataset значения будут немедленно написаны базе данных, в то время как в других они будут сохранены во временной таблице обновлений, пока не будет вызван некий окончательный метод, чтобы сохранить все изменения в базе данных. Однако иногда, даже когда значения записаны в базу данных, Вам, вероятно, придется дополнительно вызвать метод *Commit*, чтобы заставить базу данных принять эти изменения. Всё это, в значительной степени, зависит от конкретного потомка DataSet'а, поэтому за подробностями обращайтесь к описанию этого самого конкретного потомка.
122122
123123### Вставка новой записи
124124
125125Чтобы вставить новую запись в потомок [[TDataSet]], следует использовать метод [Insert](http://www.freepascal.org/docs-html/fcl/db/tdataset.insert.html). После этого можно установить значения полей и, наконец, вызвать Post для фиксации новой записи, как показано в примере ниже.
126126
127127В примере также показано, как вставить BLOB-данные из файла - вы также можете использовать LoadFromStream для загрузки данных из потока.
128128
129129``` pascal
130130 MyDataset.Insert;
131131 MyDataset.Fields[0].AsInteger := 4; //целочисленное поле
132132 MyDataset.Fields[1].AsString := 'First Name'; //строковое поле
133133 TBlobField(MyDataset.Fields[2]).LoadFromFile('SomeBlobfile.bin'); //blob-поле
134134 MyDataset.Post;
135135```
136136
137137### Как быстро перейти к одной конкретной записи в таблице
138138
139139#### После селекта всех записей таблицы
140140
141141Если вы используете `SELECT * FROM`, чтобы выбрать все записи таблицы, а затем хотите быстро переключаться между ними, вам придется построить индекс и выполнить поиск по нему. Более эффективно выбрать только ту запись, которую вы хотите.
142142
143143#### Селект только нужной записи
144144
145145Одним из быстрых решений для перехода к определенной записи является выбор только ее, например:
146146
147147``` pascal
148148var
149149 MyDataset: TSQLQuery;
150150begin
151151 //...
152152 MyDataset.FieldDefs.Add('SessionId', ftLargeint);
153153 MyDataset.FieldDefs.Add('GameEvent', ftLargeint);
154154 MyDataset.FieldDefs.Add('TableId', ftInteger);
155155 MyDataset.FieldDefs.Add('LoggedIn', ftBoolean);
156156 MyDataset.FieldDefs.Add('PlayerId', ftInteger);
157157 MyDataset.Active := False;
158158 { Непараметризированный формат; могут возникнуть проблемы с текстом, содержащим одинарные кавычки "'" и даты
159159 SQLText := Format('select * from "GameSession" WHERE "SessionId"=%d', [ASessionId]);}
160160
161161 // Решение: параметризированный запрос:
162162 //На самом деле, если это делается в цикле, вам нужно задать SQL.Text один раз,
163163 // и дальше менять только значение параметра
164164 MyDataset.SQL.Text := 'select * from "GameSession" WHERE "SessionID"=:SessionID');
165165 MyDataSet.ParamByName('SessionID').AsLargeInt := ASessionID;
166166 try
167167 MyDataset.Active := True;
168168 except
169169 //...
170170 end;
171171```
172172
173173Затем вы можете прочитать информацию, используя что-то вроде этого:
174174
175175``` pascal
176176 lPlayerId := MyDataset.Fields[4].AsInteger;
177177```
178178
179179### Фильтрация
180180
181181Вы можете отфильтровать ваш набор данных, чтобы ограничить записи нужным подмножеством (например, все фамилии, начиная с Иванова).
182182
183183- Используя .Filter:
184184 - [[TDbf]], [[TBufDataset]] и потомки (включая [[TSQLQuery]])- используйте анализатор фильтрации TDBF; смотрите [[Lazarus Tdbf Tutorial|Expressions]] для более подробного объяснения.
185185 - [[TMemDataset]] - не поддерживает .Filter
186186- Используя процедуры callback/события OnFilter, где вы можете запрограммировать свою собственную функцию фильтра
187187
188188### Locate/lookup
189189
190190Хотя чаще используются в не-SQL наборах данных (например, [[TParadoxDataSet]], [[TDbf]]), вы можете перемещаться между записями, используя [[locate]]/[[lookup]].
191191
192192### Использование TSQLQuery
193193
194194Для более подробной информации о [[TSQLQuery]] см. [[Working With TSQLQuery]]
195195
196196### Экспорт
197197
198198FPC/Lazarus содержит функциональность, позволяющую экспортировать наборы данных в различные форматы; см. например
199199
200200- [[fpXMLXSDExport]]
201201- [[fpdbfexport]]
202202- другие компоненты на вкладке Data Export (Экспорт данных)
203203
204204Конечно, вы также можете сделать это вручную (см., Например, [[FPSpreadsheet/ru|Преобразование базы данных в электронную таблицу]] для экспорта в формат Excel с использованием fpspreadsheet)
205205
206206## Элементы управления данными
207207
208208Чтобы использовать любой из этих элементов управления, добавьте элемент управления на форму и задайте минимально хотя бы свойство источника данных. Другие ключевые свойства будут заполнены автоматически.
209209
210210### Элемент управления Datasource
211211
212212Этот элемент управления отслеживает, какие записи связанных элементов управления в данный момент включены. Элемент управления Datasource должен быть связан с набором данных (например, TSQLQuery).
213213
214214### Элемент управления одним полем
215215
216216Все эти элементы управления прикрепляются к одному полю. Как и с datasource, задайте имя поля. Элементы управления включают в себя:
217217
218218- Элемент управления [[doc:lcl/dbctrls/tdbtext.html|DBText]] - Отображает текстовое поле (только чтение, без обрамления)
219219- Элемент управления [[doc:lcl/dbctrls/tdbedit.html|DBEdit]] - Отображает / редактирует текстовое поле как edit box
220220- Элемент управления [[doc:lcl/dbctrls/tdbmemo.html|DBMemo]] - Отображает / редактирует текстовое поле как многострочный edit box
221221- Элемент управления [[doc:lcl/dbctrls/tdbimage.html|DBImage]] - Показывает изображение, хранящееся в базе данных, как BLOB. Примечание: по умолчанию Lazarus сохраняет заголовок с типом изображения перед данными изображения в поле BLOB базы данных. Этим он отличается от Delphi. Однако вы можете сделать TDBImage Delphi-совместимым: см. [[Lazarus For Delphi Users/ru|TDBImage]]
222222- Элемент управления [[doc:lcl/dbctrls/tdblistbox.html|DBListBox]] и элемент управления [[doc:lcl/dbctrls/tdbcombobox.html|DBComboBox]] позволяют пользователю вставлять значения в поле базы данных из списка значений в свойстве Items элементов управления
223223- Элемент управления [[doc:lcl/dbctrls/tdblookuplistbox.html|DBLookupListBox]] и элемент управления [[doc:lcl/dbctrls/tdblookupcombobox.html|DBLookupComboBox]], см. также [[TDBLookupComboBox]] - позволяют пользователю вставлять значения в поле базы данных, отображая содержимое поля поиска в другой таблице. Хотя эти элементы управления хранят свои результаты в одном поле, вам нужно другое поле для поиска значений. **Примечание**: по крайней мере для DBLookupComboBox, есть ошибка с FPC 2.6.0, которая требует, чтобы поле списка (listfield) также присутствовало в datasource; вы можете обойти его, объявив вычисляемое поле с тем же именем, что и поле списка в наборе данных datasource, которое ничего не делает.
224224- Элемент управления [[doc:lcl/dbctrls/tdbcheckbox.html|DBCheckBox]] - Отображает / редактирует логическое поле путем установки / снятия флажка (крыжика)
225225- Элемент управления [[doc:lcl/dbctrls/tdbradiogroup.html|DBRadioGroup]] - Отображает элементы как в обычной группе радиокнопок, считывая/устанавливая значение поля из списка совпадающих значений
226226- Элемент управления [[doc:lcl/dbctrls/tdbcalendar.html|DBCalendar]] - Отображает / редактирует поле даты с помощью панели календаря
227227- Элемент управления [[doc:lcl/dbctrls/tdbgroupbox.html|DBGroupBox]] - версия TGroupBox с поддержкой данных, позволяющая группировать несколько объектов с данными на форме
228228
229229### Элемент управления [[doc:lcl/dbgrids/tdbgrid.html|DBGrid]]
230230
231231Этот элемент управления может отображать несколько полей в макете строки/столбца - фактически по умолчанию он показывает их все. Однако вы можете поместить записи в [[doc:lcl/dbgrids/tdbgrid.columns.html|columns collection]] (список столбцов), чтобы ограничить его определенными полями и установить ширину и заголовки каждого столбца.
232232
233233Помимо [[doc:lcl/dbgrids/tdbgrid.html|упомянутой документации]], некоторые подробности можно найти здесь: [[Grids Reference Page/ru|TCustomDBGrid]]
234234
235235### Элемент управления [Navigator](http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbnavigator.html)
236236
237237Этот элемент управления дает пользователю непосредственный контроль над набором данных. Это позволяет пользователю:
238238
239239- переходить к следующей или предыдущей записи, или к началу или концу записей
240240- добавлять новую запись (эквивалентно вызову метода dataset.insert)
241241- переводить набор данных в режим редактирования
242242- удалять запись
243243- подтверждать или отменять текущие изменения
244244- обновлять данные (полезно в многопользовательских приложениях базы данных)
245245
246246Ключевые свойства:
247247
248248- VisibleButtons: позволяет контролировать, что может делать пользователь. Например, если удаление не разрешено, скрыть кнопку удаления. Если у вас есть DBGrid, присоединенный к тому же набору данных, вы можете решить, что вам не нужны следующие и предыдущие кнопки.
249249- Width: если вы показываете не все кнопки, вы можете установить ширину (высота * кол-во_видимых_кнопок)
250250
251251## Выполнение тестов базы данных FPC
252252
253253Бесплатные компоненты баз данных Pascal включают, основанную на [[fpcunit]], тестовую среду dbtestframework, которую можно использовать для проверки функциональности. Смотрите каталог *source\packages\fcl-db\tests\* в дереве исходного кода FPC. Туда включен тестовый фреймворк, который может быть запущен на различных компонентах базы данных, а также некоторые другие тесты (например, тест экспорта базы данных).
254254
255255Чтобы запустить тестовую среду для определенной базы данных:
256256
2572571\. Сохраните файл *source\packages\fcl-db\tests\database.ini.txt* как *source\packages\fcl-db\tests\database.ini*
258258
2592592\. Измените файл *source\packages\fcl-db\tests\database.ini*, чтобы выбрать какой тип базы данных вы будете использовать.
260260
261261Пример для Interbase/Firebird:
262262
263263``` ini
264264[Database]
265265type=interbase
266266```
267267
2682683\. В том же файле настройте параметры для вашей базы данных. Например. если вы ранее выбрали interbase:
269269
270270``` ini
271271[interbase]
272272connector=sql
273273connectorparams=interbase
274274; Имя базы данных/путь (примечание: база данных уже должна существовать)
275275; Вы можете использовать псевдонимы (см. aliases.conf к вашей документации Firebird)
276276name=testdb
277277user=sysdba
278278password=masterkey
279279; Ваше имя хоста может очень отличаться:
280280; Оставьте пустым, если вы хотите использовать базу данных embedded Firebird
281281hostname=192.168.0.42
282282```
283283
284284------------------------------------------------------------------------
285285
286286(прим.перев.: если сервер запущен на вашей машине, то обычно используют loopback ("сетевую петлю"), т.е. hostname указывается как *localhost* или 127.0.0.1)
287287
288288------------------------------------------------------------------------
289289
2902904\. Скомпилируйте и запустите *source\packages\fcl-db\tests\dbtestframework.pas* (вы также можете использовать Lazarus для компиляции и запуска версии с графическим интерфейсом, dbtestframework_gui). Если вы используете встроенную базу данных в Windows (например, embedded Firebird или sqlite), сначала скопируйте необходимые DLL-файлы в каталог. Вывод будет в формате XML (или будет отображаться на вашем экране, если вы используете dbtestframework_gui).
291291
292292Пожалуйста, см. *source\packages\fcl-db\tests\README.txt* для получения более подробной информации.
293293
294294## Пакеты базы данных, содержащиеся в Lazarus
295295
296296### sqldblaz.lpk
297297
298-<figure>
299-<img src="sqldbcomponents.png‎" title="sqldbcomponents.png‎" />
300-<figcaption>sqldbcomponents.png‎</figcaption>
301-</figure>
298+![](/wiki-images/c/c5/Sqldbcomponents.png%E2%80%8E)
302299
303300Этот пакет обеспечивает доступ к различным базам данных. К ним относятся:
304301
305302- Interbase/Firebird
306303- Microsoft SQL Server (за исключением Lazarus/FPC x64 для Windows)
307304- MySQL
308305- Oracle (за исключением Lazarus/FPC x64 для Windows)
309306- PostgreSQL (за исключением Lazarus/FPC x64 для Windows)
310307- SQLite (с поддержкой расширения [[Spatialite]])
311308- Sybase ASE (Adaptive Server Enterprise - не следует путать с Sybase ASA) (за исключением Lazarus/FPC x64 для Windows)
312309- любая база данных с драйвером ODBC.
313310
314311Компоненты (TSQLQuery, TSQLTransaction, TIBConnection, TODBCConnection, TOracleConnection, TMSSQLConnection, TMySQL40Connection, TMySQL41Connection, TMySQL50Connection, TPQConnection, TSybaseConnection) находятся на вкладке 'SQLdb' в палитре компонентов.
315312
316313- [[SQLdb Package|Пакет SQLdb]]
317314
318315### dbflaz.lpk
319316
320317Этот пакет обеспечивает доступ к базам данных dBase и FoxPro. Вы можете получить больше информации в [[Lazarus Tdbf Tutorial/ru|Руководстве по Lazarus Tdbf]]. Компонент TDbf находится на [[Data Access tab/ru|вкладке Data Access]] в палитре компонентов.
321318
322319### sqlitelaz.lpk
323320
324321Этот пакет предоставляет доступ к базам данных SQLite. Вы можете получить больше информации в разделе [[Lazarus Database Overview/ru|Обзор баз данных Lazarus]].
325322
326323### sdflaz.lpk
327324
328325Компонент [[TSdfDataSet]] может быть найден на вкладке [[Data Access tab/ru|Data Access]] в палитре компонентов.
329326
330327### lazreport.lpk
331328
332329Домашняя страница генератора отчетов: [здесь](http://lazreport.sourceforge.net/). Больше информации (и др. дополнительные ссылки) можно найти [[Projects using Lazarus|здесь]]. LazReport зависит от пакета Printer4Lazarus. Начиная с ревизии 11950 LazReport был включен в репозиторий Lazarus SVN.
333330
334331### lazdbexport.lpk
335332
336333См. [[lazdbexport]].
337334
338335## Внешние пакеты / библиотеки
339336
340337### Zeos DataBase Objects
341338
342339Эти компоненты обеспечивают доступ к различным базам данных. Вы можете найти больше информации [[ZeosDBO|здесь]]. Эта вики также содержит [[Zeos tutorial|руководство по Zeos]].
343340
344341### Pascal Data Objects
345342
346343Теперь есть альтернатива.
347344
348345Поддерживаются:
349346
350347- MySQL 4.1 и 5.0
351348- sqlite-2 и sqlite-3
352349- pgsql-8.1
353350- interbase-5, interbase-6, firebird-1.0, firebird-1.5, firebird-1.5E, firebird-2.0, firebird-2.0E
354351- mssql (Microsoft library) и sybase (FreeTDS library)
355352- oracle
356353
357354как подготовленные операторы, привязка и хранимые процедуры поддерживаются API базы данных, который называется Pascal Data Objects, который вдохновлен PHP Data Objects. Весь код и документация, необходимые для использования этого нового API, доступны на Sourceforge: <http://pdo.sourceforge.net/>
358355
359356### TPSQL
360357
361358Эти компоненты обеспечивают доступ к базам данных PostgreSQL посредством TCP/IP. Вы можете найти больше информации на [[TPSQL|этой странице]].
362359
363360### FIBL
364361
365362Эти компоненты обеспечивают доступ к базам данных Interbase и Firebird. Домашняя страница [<http://sourceforge.net/projects/fibl>](http://sourceforge.net/projects/fibl).
366363
367364### IBX
368365
369366IBX For Lazarus - это компоненты для доступа к базам данных Firebird: см. [[IBX]]
370367
371368### FBLib Firebird Library
372369
373370[FBLib](http://fblib.altervista.org/) является библиотекой с открытым исходным кодом, не-Data Aware, для прямого доступа к реляционной базе данных Firebird от Borland Delphi/Kylix, Free Pascal и Lazarus.
374371
375372Текущие функции включают в себя:
376373
377374- Прямой доступ к Firebird 1.0.x, 1.5.x и 2.x Classic или SuperServer
378375- Мультиплатформа \[Win32, Gnu/Linux, FreeBSD)
379376- Автоматический выбор клиентской библиотеки 'fbclient' или 'gds32'
380377- Запрос с параметрами
381378- Поддержка диалекта SQL 1/3
382379- Лицензионное соглашение LGPL
383380- Извлечение метаданных
384381- Парсер простого сценария
385382- В окончательный EXE-файл добавляется только 100-150 КБ
386383- Поддержка BLOB-полей
387384- Экспорт данных в HTML-скрипт SQL
388385- Диспетчер служб (резервное копирование, восстановление, исправление ...)
389386- Оповещение событий
390387
391388Вы можете загрузить документацию с [github](https://github.com/graemeg/firebird-lib).
392389
393390### Unified Interbase
394391
395392UIB обеспечивает доступ к базам данных Interbase, Firebird и YAFFIL. Домашняя страница [на sourceforge.net](https://sourceforge.net/projects/uib/). Репозиторий SVN доступен по адресу <https://github.com/hgourvest/uib>
396393
397394### TechInsite Object Persistence Framework (tiOPF)
398395
399396Более подробную информацию о tiOPF можно найти на этой[[tiOPF|странице]].
400397
401398### Advantage TDataSet Descedant
402399
403400Advantage TDataSet Descedant предоставляет средства для подключения (и открытия таблиц) к серверу базы данных Advantage. Advantage - это гибкая, не требующая администрирования встроенная база данных, которая предоставляет клиент-сервер, а также одноранговый доступ к форматам файлов Clipper, FoxPro и Visual FoxPro 9 DBF, и также собственный формат файлов, обеспечивающий путь миграции, позволяющий использовать новые функции.
404401
405402Основные характеристики:
406403
407404- Бесплатный доступ к одноранговой базе данных с возможностью перехода на клиент/сервер
408405- Многоплатформенность (клиенты поддерживаются в Windows и Linux, сервер поддерживается в Windows, Linux и NetWare)
409406- Поддерживает как навигационный, так и реляционный SQL доступ к базе данных
410407- Полнотекстовая поисковая система
411408- Шифрование таблиц, индексов, memo-полей и передаваемых данных
412409- Совместимость с нативными компонентами TDataset
413410- Резервное копирование в онлайн-хранилище
414411- Сервер поддерживает репликацию
415412
416413Для получения дополнительной информации см. домашнюю страницу [Advantage Database Server](https://www.sap.com/products/advantage-database-server.html).
417414
418415### ZMSQL, sql-расширяемая база данных в памяти
419416
420417Для получения дополнительной информации см. [ZMSQL wiki-страницу ZMSQL](http://wiki.lazarus.freepascal.org/ZMSQL)
421418
422419ZMSQL - это база данных с открытым исходным кодом, наследуемая от TBufDataset, sql-расширяемая база данных в памяти для Free Pascal (FPC), работающая со значениями, разделяемых точкой с запятой, плоских текстовых таблиц. Полностью написанная на Pascal она не зависит от внешних библиотек. Использует движок JanSQL для реализации SQL.
423420
424421Она предлагает:
425422
426423- Загрузку из и сохранение данных в виде плоских текстовых таблиц
427424- Использование SQL-запросов для получения данных
428425- Копирование данных и схем из других наборов данных
429426- Возможность предопределения fielddefs или создание их на лету
430427- Механизм фильтрации Master/detail
431428- Ссылочную целостность
432429- Параметризованные запросы
433430
434431Загружаемый архив содержит исходный код, некоторые демонстрационные приложения, иллюстрирующие функции компонента, а также файл readme.
435432
436433## См.также
437434
438435- [[Portal:Databases|Database Portal]]
439436- [[Lazarus DB Faq]]
440437
441438---
442439*From the Free Pascal wiki, page "Databases/ru", as it stood on 2021-11-16 after a change by Slawek, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
443440Category: Databases/ru
444441Category: Russian

Back to history