Difference between revisions of "SQLdb Tutorial0/ja"

From Lazarus wiki
Jump to navigationJump to search
(Created page with "{{SQLdb Tutorial0}} {{Infobox databases/ja}} == 導入 == この記事は、SQLdb Tutorial 1, 2 と 3 で使うためのサンプルデータとサンプルテーブルを、...")
 
 
(8 intermediate revisions by 2 users not shown)
Line 2: Line 2:
  
 
{{Infobox databases/ja}}
 
{{Infobox databases/ja}}
 +
 
== 導入 ==
 
== 導入 ==
 
この記事は、SQLdb Tutorial 1, 2 と 3 で使うためのサンプルデータとサンプルテーブルを、データベース環境と同時に設定するためのものです。
 
この記事は、SQLdb Tutorial 1, 2 と 3 で使うためのサンプルデータとサンプルテーブルを、データベース環境と同時に設定するためのものです。
Line 7: Line 8:
 
このページはとても長い文章からなっていますが、異なるデータベースシステムにおける説明を含んでいますので、必要な個所のみ読んでください。
 
このページはとても長い文章からなっていますが、異なるデータベースシステムにおける説明を含んでいますので、必要な個所のみ読んでください。
  
もしもあなたがすぐにでも、 Firebird サーバーと下記のサンプルデータベースをインストールすることをお勧めします。If you want to get up and running quickly,
+
もしもあなたがすぐにでもチュートリアルを実行したいのなら、Firebird サーバーと下記のサンプルデータベースをインストールすることをお勧めします。
  
 
== 必要条件 ==
 
== 必要条件 ==
 
このチュートリアルは、最近の Lazarus のバージョンを用いることを基本に記述されています(Laz 1.0)。; より古いバージョンの Lazarus 0.9.30. でも動くはずです。
 
このチュートリアルは、最近の Lazarus のバージョンを用いることを基本に記述されています(Laz 1.0)。; より古いバージョンの Lazarus 0.9.30. でも動くはずです。
  
Furthermore you need an SQL/relational database, such as [http://sourceforge.net/project/showfiles.php?group_id=9028 Firebird] (if possible version 2.0 or newer). It's easiest if you use standard settings (e.g user name SYSDBA and password masterkey), and that you have the employee sample database installed.
+
さらに、FirebirdなどのSQL / リレーショナルデータベースが必要です(可能であればバージョン2.0以降)。標準設定(例えば、ユーザー名がSYSDBAでパスワードがmasterkey)を使用し、employeeサンプルデータベースがインストールされていることが望ましいです。
  
You can use another database (e.g. Microsoft SQL Server, MySQL, PostgreSQL, Oracle, SQLite, Sybase ASE or another database using ODBC). Please make sure you have the required database client libraries installed (see the various wiki articles on databases)  Please see below (section '''No Firebird or employee.fdb installed?''') for a way to set up your tables 
+
別のデータベース(たとえばMicrosoft SQL Server、MySQL、PostgreSQL、Oracle、SQLite、Sybase ASE、またはODBCを使用した他のデータベース)を使用することもできます。必要なデータベースクライアントライブラリがインストールされていることを確認してください(データベースに関するさまざまなウィキ記事を参照してください)。Firebirdまたはemployee.fdbがインストールされていない場合は、以下のセクション「Firebirdやemployee.fdbがインストールされていない場合」を参照してください。
  
 
== Firebird のインストール ==
 
== Firebird のインストール ==
In case you haven't yet installed Firebird or the sample database that is used with the tutorials, please find some instructions below.
+
まだFirebirdやチュートリアルで使用されるサンプルデータベースをインストールしていない場合は、以下の手順を参照してください。
  
 
=== Firebird client/server のインストール ===
 
=== Firebird client/server のインストール ===
If you haven't installed anything, you can download and run the installer from www.firebirdsql.org and install the server (e.g. "32-bit Classic, Superclassic & Superserver").
+
何もインストールしていない場合は、www.firebirdsql.orgからインストーラーをダウンロードして実行し、サーバーをインストールします(たとえば、「32-bit Classic、Superclassic&Superserver」)。
  
=== Firebird database libraries on Windows ===
+
=== WindowsでのFirebird database ライブラリ ===
 +
インストール後、WindowsではFirebirdクライアントDLLが存在している必要があります:
 +
* システムディレクトリにある可能性があります(すべてのプログラムで利用可能)。
 +
* Lazarusディレクトリにもある可能性があります(IDE内でのデザイン時サポートのため)し、実行可能ファイルがある出力ディレクトリにもある可能性があります(コンパイルされたプログラムを実行するため)。
  
After installation, on Windows you will need to have the Firebird client DLLs present:
+
Firebirdサーバーをインストールしていない場合、クライアントDLLを手に入れる簡単な方法は次のとおりです:Firebird Embedded 2.5を以下からダウンロードしてください
* they could be in your system directory (available for all programs)
 
* they can also be in your Lazarus directory (for design time support in the IDE) and in the output directory where the executable is (to run the compiled program).
 
 
 
If you haven't installed the Firebird server, an easy way to get the client DLLs is: download Firebird Embedded 2.5 from
 
 
[http://www.firebirdsql.org/en/firebird-2-5/]
 
[http://www.firebirdsql.org/en/firebird-2-5/]
Extract these files to your application directory:
+
アプリケーションディレクトリへこれらのファイルを伸長してください:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
fbclient.dll #only if using the server
+
fbclient.dll #サーバを使うときのみ
#or
+
#もしくは
fbembed.dll #only if using embedded
+
fbembed.dll #組み込み用途のみ
 
firebird.msg
 
firebird.msg
 
ib_util.dll
 
ib_util.dll
Line 44: Line 44:
 
msvcr80.dll
 
msvcr80.dll
 
</syntaxhighlight>
 
</syntaxhighlight>
Rename fbembed.dll to fbclient.dll (the name for a regular, client-server Firebird client - this helps use on older Lazarus/FPC versions). The embedded Firebird DLL can also act as a regular Firebird client.
+
Rename fbembed.dllを to fbclient.dll にリネームしてください(このファイル名は通常のクライアントサーバの Firebird クライアントです - 古いLazarus/FPCで用いる際の助けとなります)。組み込みのFirebird DLLは通常のFirebirdクライアントとしても機能することができます。
  
Make sure the employee.fdb database is in your project directory. You can copy it from the examples/empbuild/ directory of the firebird 2.5 server.
+
プロジェクトディレクトリにemployee.fdbデータベースがあることを確認してください。それをfirebird 2.5サーバーのexamples/empbuild/ディレクトリからコピーすることができます。
  
Finally, compile your project (even if it empty) once to create the output directory, and copy the dlls, as well as the employee.fdb database, into that directory.
+
最後に、プロジェクトを1度コンパイルして(たとえ空であっても)出力ディレクトリを作成し、そのディレクトリにdllファイルとemployee.fdbデータベースをコピーしてください。
  
=== Firebird database libraries on other systems ===
+
=== 他のシステムにおける Firebird データベースライブラリ ===
  
On Linux/OSX, you will also need the Firebird client shared libraries.
+
Linux/OSXでは、Firebirdクライアント共有ライブラリも必要です。
On Linux you can use your distribution's method of getting programs to get the Firebird client packages, e.g. on Debian:
+
Linuxでは、Firebirdクライアントパッケージを取得するためにディストリビューションのプログラムを使用できます。たとえば、Debianでは以下のようにします:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
aptitude install libfbclient2 firebird-dev #we need the dev version because FPC 2.6 and lower will look for libfbclient.so
+
aptitude install libfbclient2 firebird-dev #FPC 2.6とそれ以下はlibfbclient.soを探しに行くので、devバージョンが必要ですlibfbclient.so
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== No Firebird or employee.fdb installed? ==
+
== Firebird または employee.fdb がインストールされていない? ==
  
If you don't have the employee sample database installed or are using a different database, here is a minimal version of the table we'll be using (note: directions for some specific databases can be found below).
+
もしも employee サンプルデータベースがインストールされていなかったり、Firebird以外のデータベースを用いる場合、以下にチュートリアルに用いる最小限のテーブルを示します。(: いくつかのデータベースについての方法を以下に示しています)
  
=== Automatic creation ===
+
=== 自動生成 ===
The easiest way of setting this up is to create a new empty database on your system, then connect to it with the TSQLScriptSample sample/utility program.
+
これを設定する最も簡単な方法は、システム上に新しい空のデータベースを作成し、次にTSQLScriptSampleサンプル/ユーティリティプログラムでそれに接続することです。
This program is included with current Lazarus development releases in the <tt>./examples/database/tsqlscript</tt> directory, but can also be downloaded from
+
このプログラムは、現在のLazarus開発リリースには<tt>./examples/database/tsqlscript</tt>ディレクトリに含まれていますが、以下からダウンロードすることもできます。
 
: http://svn.freepascal.org/svn/lazarus/trunk/examples/database/tsqlscript/
 
: http://svn.freepascal.org/svn/lazarus/trunk/examples/database/tsqlscript/
  
Compile and run the program, then connect to the database:
+
コンパイルし、プログラムを実行、データソースに接続します:
  
 
[[image:tsqlscriptsample connect.png]]
 
[[image:tsqlscriptsample connect.png]]
  
then click the button ''Copy table creation script'', and ''Run script'':
+
そしてボタン、''Copy table creation script'' をクリックし、''Run script''を実行します:
  
 
[[image:tsqlscriptsample runfirstscript.png]]
 
[[image:tsqlscriptsample runfirstscript.png]]
  
The program should indicate success.
+
プログラムは成功したことを示すはずです。
Now do the same for ''Copy sample data script'', and ''Run script''
+
同様に ''Copy sample data script'' ''Run script''
  
In case of problems, you can try the manual steps below.
+
問題が起こった場合には、以下の手動的方法をとることができます。
  
=== Manual creation ===
+
=== 手動による生成 ===
We will create CUSTOMER and EMPLOYEE tables that will be used in a later tutorial.
+
今後のチュートリアルで用いるために、 CUSTOMER EMPLOYEE のテーブルを作成します。
  
Run these SQL commands in your database editor/tool:
+
用いるデータベースのエディタやツールから、以下の SQL コマンドを実行してください。:
 
<syntaxhighlight lang="sql">
 
<syntaxhighlight lang="sql">
 
CREATE TABLE CUSTOMER
 
CREATE TABLE CUSTOMER
Line 110: Line 110:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Some data so you can at least show something.... first some clients:
+
データベース上で確認できるように、いくつかのデータを入れておきます。まずは、クライアントのデータです。:
 
<syntaxhighlight lang="sql">
 
<syntaxhighlight lang="sql">
 
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (1, 'Michael Design', 'San Diego', 'USA');
 
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (1, 'Michael Design', 'San Diego', 'USA');
Line 129: Line 129:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Then some employees:
+
つぎに、被雇用者のデータです。:
 
<syntaxhighlight lang="sql">
 
<syntaxhighlight lang="sql">
 
INSERT INTO EMPLOYEE (emp_no, first_name, last_name, phone_ext, job_code, job_grade,  
 
INSERT INTO EMPLOYEE (emp_no, first_name, last_name, phone_ext, job_code, job_grade,  
Line 142: Line 142:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Please create the database, table and insert the data in your database environment.
+
データベースを生成し、テーブルを生成し、データをあなたのデータベース環境に入力してください。
  
 
=== SQLite ===
 
=== SQLite ===
Line 161: Line 161:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
以上より、あなたのプロジェクトのディレクトリに、 employee.sqlite というファイルが作られているはずです。
+
以上より、プロジェクトのディレクトリに、 employee.sqlite というファイルが作られているはずです。
  
必要とされる sqlite dll/so がインストールされていることを確認しておいてください。 - e.g. Windows であれば、 sqlite3.dll が以下のディレクトリにあるはずです。  
+
必要とされる sqlite dll/so がインストールされていることを確認しておいてください。 - 例えば、Windows であれば sqlite3.dll が以下のディレクトリにあるはずです。  
 
* あなたの Lazarus とプロジェクト出力フォルダ または、
 
* あなたの Lazarus とプロジェクト出力フォルダ または、
 
* あなたの system ディレクトリ
 
* あなたの system ディレクトリ
Line 169: Line 169:
 
また、あなたが 32-bit sqlite dll を使っている場合、 32-bit の lazarus を使う必要があります。
 
また、あなたが 32-bit sqlite dll を使っている場合、 32-bit の lazarus を使う必要があります。
  
Compile your project (even if it is empty) once to create the output directory, and (on Windows) copy the dll, as well as the employee.sqlite database, into that directory.
+
あなたのプロジェクトファイルをコンパイル(それが空のプロジェクトでも)して、一旦出力ディレクトリを作ります。そして、(Windows 上で) employee.sqlite データベースと dll をコピーして、そのディレクトリに入れます。
  
 
=== PostgreSQL ===
 
=== PostgreSQL ===
This section assumes you're using a Linux server and the shell; comparable steps can be done using Windows and GUI tools such as pgadmin.
+
この節では、Linuxサーバとシェルが使われていると仮定します; 例えばpgadminといったGUI ツールとWindowsでも似たような手順でできるでしょう。
  
Log in to your server and switch to the postgres account:
+
サーバにログインし、postgresアカウントに切り替えます
 
<syntaxhighlight lang=bash>
 
<syntaxhighlight lang=bash>
su - postgres -c psql # immediately start up psql SQL interpreter
+
su - postgres -c psql # 直ちにpsql SQLインタープリタを起動します
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Create a user for the database and the tables:
+
データベースとテーブルのためにユーザーを作ります
 
<syntaxhighlight lang=SQL>
 
<syntaxhighlight lang=SQL>
 
CREATE USER employee WITH PASSWORD 'hellopassword'; -- of course, adjust password to taste
 
CREATE USER employee WITH PASSWORD 'hellopassword'; -- of course, adjust password to taste
-- something like  'CREATE ROLE' should appear indicating success.
+
-- 'CREATE ROLE'といったようなメッセージが現れ成功したことがわかります。
-- to later change the password you can use something like
+
-- 後にパスワードを変更するには、以下のようなコマンドで行えます。
-- alter user employee with password '<newpasswordhere>';
+
-- ユーザーemployeeにパスワード '<newpasswordhere>' を与えます;
  
-- We're going to let the password never expire; if you want more security, you can leave this step out:
+
-- パスワードを期限切れにしないため。もしよりセキュリティを望むのであれば、ここは飛ばしてください:
ALTER USER employee VALID UNTIL 'infinity'; --password never expires
+
ALTER USER employee VALID UNTIL 'infinity'; --パスワードは期限切れにならなりません
  
-- Now we're tightening it up a bit again:
+
-- ここで、少し、セキュリティを厳しくする
-- Don't allow user to create a database or create other users:
+
-- ユーザーにデータベースや他のユーザーを作ることを許しません:
ALTER USER employee NOCREATEDB NOCREATEUSER; --restrict object creation
+
ALTER USER employee NOCREATEDB NOCREATEUSER; --オブジェクト作成を制限します
-- something like 'ALTER ROLE' should appear indicating success.
+
-- 'ALTER ROLE'のように、成功するはずです
  
-- Create our database:
+
-- employeeデータベースを作る:
 
CREATE DATABASE employee;
 
CREATE DATABASE employee;
-- something like CREATE DATABASE should appear indicating success.
+
-- CREATE DATABASE のように、成功するはずです
  
-- Assign all privileges on database employee to user employee:
+
-- データベース管理者とユーザーにすべての特権を割り当てます:
GRANT ALL PRIVILEGES ON DATABASE employee TO employee; -- allow user full permissions to database
+
GRANT ALL PRIVILEGES ON DATABASE employee; -- TOに対して employeeデータベースの全権限を与えます
-- something like GRANT should appear indicating success.
+
-- GRANTのように成功するはずです
  
-- We create the table using a serial datatype - aka autonumber/autoincrement:
+
-- シリアル データタイプ-またの名を、autonumber/autoincrementを作ります
 
CREATE TABLE customer
 
CREATE TABLE customer
 
(
 
(
Line 212: Line 212:
 
);
 
);
  
-- Then create the employee table:
+
-- 従業員テーブルを作ります:
 
CREATE TABLE EMPLOYEE
 
CREATE TABLE EMPLOYEE
 
(
 
(
Line 226: Line 226:
 
);
 
);
  
-- Now copy and paste the INSERT statements from the section above to insert the data.
+
-- これで、データを挿入するためINSERTステートメントを、上記の節からコピーアンドペーストします
  
-- To test if the right data is present, enter this query:
+
-- 正しいデータが存在するかこのクエリで試験します
 
SELECT * FROM customer;
 
SELECT * FROM customer;
-- You should see some customer data.
+
-- いくつかの顧客データを見ることができます
  
-- Exit out of psql:
+
-- psqlから抜けます
 
\q  
 
\q  
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Now you should be on a shell logged in as the postgres user.
+
これで、postgresにpostgresユーザーとしてシェルログインできます
  
If your server is on another machine than your development machine, make sure you allow network access to the database. See your postgresql documentation for details, but something like this should work:
+
もし、サーバが、開発機ではなく他の機器ならばデータベースにネットワークアクセスできるか確かめてください。postgresドキュメンテーションを参照してください。しかし、このコマンドが動くはずです。
 
<syntaxhighlight lang=bash>
 
<syntaxhighlight lang=bash>
# please adjust nano (e.g. use vim,emacs,joe...) and the postgres version number depending on situation
+
# nano (例えば、vim、emacs、joe...)を設定し、状況によりpostgresのバージョンナンバーによりますが、
 
nano /etc/postgresql/8.4/main/pg_hba.conf
 
nano /etc/postgresql/8.4/main/pg_hba.conf
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Verify if there is a line like - NOTE: replace 192.168.0.1 with your own LAN ip address range
+
このような行があること、注意:192.168.0.1は実際のLANアドレスに読み替えてください、を確かめて
  
 
<nowiki>
 
<nowiki>
#allow access from local network using md5 hashed passwords:
+
#md5ハッシュパスワードを用いてローカルネットワークからアクセスを許可するには:
  
 
host    all        all        192.168.0.1/24      md5
 
host    all        all        192.168.0.1/24      md5
 
</nowiki>
 
</nowiki>
  
or more restrictive:
+
またはより厳しく:
  
 
<nowiki>
 
<nowiki>
# only allow network access to the employee database by the employee user
+
# employeeユーザーによってのみemployeeデータベースにアクセスすることを許すには
  
 
host    employee        employee        192.168.0.1/24      md5
 
host    employee        employee        192.168.0.1/24      md5
 
</nowiki>
 
</nowiki>
  
If there isn't such a line, add the line at the end, save and close your editor.
+
もしこのような行がなければ最後に加え、エディタを終了します
See PostgreSQL documentation for more details.
+
詳細はPostgreSQLに譲ります
  
Reload PostgreSQL settings:
+
PostgreSQL設定を読み込みます:
 
<syntaxhighlight lang=bash>  
 
<syntaxhighlight lang=bash>  
 
psql
 
psql
Line 269: Line 269:
 
then
 
then
 
<syntaxhighlight lang=SQL>  
 
<syntaxhighlight lang=SQL>  
SELECT pg_reload_conf(); --reload settings...
+
SELECT pg_reload_conf(); --設定を読み込み...
-- ...and exit back to shell:
+
-- ...抜けてシェルに戻ります:
 
\q
 
\q
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Test logging in to PostgreSQL.
+
PostgreSQLにログインテストします
  
Note: by default PostgreSQL tries an ident/unix domain socket login which doesn't allow passwords. So we specify a host to force TCP/IP login:
+
Note: デフォルトではPostgreSQLは パスワードを許さない、ident/unixドメインソケットでのログインを試みます なので、ホストに対してTCP/IPを強制する:
 
<syntaxhighlight lang=bash>
 
<syntaxhighlight lang=bash>
psql -h 127.0.0.1 -d employee -U employee -W #Log in via tcp/ip. Enter your db password.
+
psql -h 127.0.0.1 -d employee -U employee -W # tcp/ip経由でログインします db パスワードを入力してください
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Make sure the required PostgreSQL dll/so and any required other libraries is installed - e.g. on Windows, they should be either:
+
必要とされるPostgreSQLのdll/so、そして他のライブラリがインストールされていることを確認してください 例えば、Windowsではそれらは
* in your Lazarus + project output directory or
+
* Lazarus + project 出力ディレクトリおよび
* in your system directory
+
* システムディレクトリ
 
+
の双方にある必要があります。
Compile your project (even if it is empty) once to create the output directory, and (on Windows) copy the dlls into that directory.
+
もし、何もなくともprojectを1度出力ディレクトリにコンパイルし、Windowsでは dlls をそのディレクトリにコピーしてください。
  
== Finish ==
+
== 終わりに ==
Now you've set up your database, you can continue to [[SQLdb Tutorial1/ja|the first "real" tutorial]].
+
これで、あなたのデータベースが設定できました。[[SQLdb Tutorial1/ja|初めての "本当の" チュートリアル]] に進みましょう。
  
== See also ==
+
== 関連情報 ==
* [[SQLdb Tutorial1/ja]]: First part of the DB tutorial series, showing how to set up a grid that shows database data
+
* [[SQLdb Tutorial1/ja]]: DB チュートリアルの第一の部分。データベースのデータを、どのように grid に表示させるかを学びます。
* [[SQLdb Tutorial2/ja]]: Second part of the DB tutorial series, showing editing, inserting etc.
+
* [[SQLdb Tutorial2/ja]]: DB チュートリアルの第二の部分。データベースのデータの挿入や編集について学びます。
* [[SQLdb Tutorial3/ja]]: Third part of the DB tutorial series, showing how to program for multiple databases and use a login form
+
* [[SQLdb Tutorial3/ja]]: DB チュートリアルの第三の部分。複数のデータベースについてのプログラムやログインフォームの使い方を学びます。
* [[SQLdb Tutorial4/ja]]: Fourth part of the DB tutorial series, showing how to use data modules
+
* [[SQLdb Tutorial4/ja]]: DB チュートリアルの第四の部分。どのようにデータモジュールを用いるかを学びます。
* [[Lazarus Database Overview/ja]]: Information about the databases that Lazarus supports. Links to database-specific notes.
+
* [[Lazarus Database Overview/ja]]: Lazarus がサポートしているデータベースについての情報。 データベースごとの記述へのリンクを含みます。
* [[SQLdb Package/ja]]: information about the SQLdb package
+
* [[SQLdb Package/ja]]: SQLdb パッケージについての情報
* [[SQLdb Programming Reference/ja]]: an overview of the interaction of the SQLdb database components
+
* [[SQLdb Programming Reference/ja]]: SQLdb データベースコンポーネントの入出力の概要
* [[SqlDBHowto/ja]]: information about using the SQLdb package
+
* [[SqlDBHowto/ja]]: SQLdb パッケージを用いることについての情報
* [[Working With TSQLQuery/ja]]: information about TSQLQuery
+
* [[Working With TSQLQuery/ja]]: TSQLQuery についての情報
 
<br/>
 
<br/>

Latest revision as of 15:36, 27 March 2024

English (en) français (fr) 日本語 (ja)

データベースのポータル

参照:

チュートリアル/練習となる記事:

各種データベース

Advantage - MySQL - MSSQL - Postgres - Interbase - Firebird - Oracle - ODBC - Paradox - SQLite - dBASE - MS Access - Zeos

導入

この記事は、SQLdb Tutorial 1, 2 と 3 で使うためのサンプルデータとサンプルテーブルを、データベース環境と同時に設定するためのものです。

このページはとても長い文章からなっていますが、異なるデータベースシステムにおける説明を含んでいますので、必要な個所のみ読んでください。

もしもあなたがすぐにでもチュートリアルを実行したいのなら、Firebird サーバーと下記のサンプルデータベースをインストールすることをお勧めします。

必要条件

このチュートリアルは、最近の Lazarus のバージョンを用いることを基本に記述されています(Laz 1.0)。; より古いバージョンの Lazarus 0.9.30. でも動くはずです。

さらに、FirebirdなどのSQL / リレーショナルデータベースが必要です(可能であればバージョン2.0以降)。標準設定(例えば、ユーザー名がSYSDBAでパスワードがmasterkey)を使用し、employeeサンプルデータベースがインストールされていることが望ましいです。

別のデータベース(たとえばMicrosoft SQL Server、MySQL、PostgreSQL、Oracle、SQLite、Sybase ASE、またはODBCを使用した他のデータベース)を使用することもできます。必要なデータベースクライアントライブラリがインストールされていることを確認してください(データベースに関するさまざまなウィキ記事を参照してください)。Firebirdまたはemployee.fdbがインストールされていない場合は、以下のセクション「Firebirdやemployee.fdbがインストールされていない場合」を参照してください。

Firebird のインストール

まだFirebirdやチュートリアルで使用されるサンプルデータベースをインストールしていない場合は、以下の手順を参照してください。

Firebird client/server のインストール

何もインストールしていない場合は、www.firebirdsql.orgからインストーラーをダウンロードして実行し、サーバーをインストールします(たとえば、「32-bit Classic、Superclassic&Superserver」)。

WindowsでのFirebird database ライブラリ

インストール後、WindowsではFirebirdクライアントDLLが存在している必要があります:

  • システムディレクトリにある可能性があります(すべてのプログラムで利用可能)。
  • Lazarusディレクトリにもある可能性があります(IDE内でのデザイン時サポートのため)し、実行可能ファイルがある出力ディレクトリにもある可能性があります(コンパイルされたプログラムを実行するため)。

Firebirdサーバーをインストールしていない場合、クライアントDLLを手に入れる簡単な方法は次のとおりです:Firebird Embedded 2.5を以下からダウンロードしてください [1] アプリケーションディレクトリへこれらのファイルを伸長してください:

fbclient.dll #サーバを使うときのみ
#もしくは
fbembed.dll #組み込み用途のみ
firebird.msg
ib_util.dll
icudt30.dll
icuin30.dll
icuuc30.dll
Microsoft.VC80.CRT.manifest
msvcp80.dll
msvcr80.dll

Rename fbembed.dllを to fbclient.dll にリネームしてください(このファイル名は通常のクライアントサーバの Firebird クライアントです - 古いLazarus/FPCで用いる際の助けとなります)。組み込みのFirebird DLLは通常のFirebirdクライアントとしても機能することができます。

プロジェクトディレクトリにemployee.fdbデータベースがあることを確認してください。それをfirebird 2.5サーバーのexamples/empbuild/ディレクトリからコピーすることができます。

最後に、プロジェクトを1度コンパイルして(たとえ空であっても)出力ディレクトリを作成し、そのディレクトリにdllファイルとemployee.fdbデータベースをコピーしてください。

他のシステムにおける Firebird データベースライブラリ

Linux/OSXでは、Firebirdクライアント共有ライブラリも必要です。 Linuxでは、Firebirdクライアントパッケージを取得するためにディストリビューションのプログラムを使用できます。たとえば、Debianでは以下のようにします:

aptitude install libfbclient2 firebird-dev #FPC 2.6とそれ以下はlibfbclient.soを探しに行くので、devバージョンが必要ですlibfbclient.so

Firebird または employee.fdb がインストールされていない?

もしも employee サンプルデータベースがインストールされていなかったり、Firebird以外のデータベースを用いる場合、以下にチュートリアルに用いる最小限のテーブルを示します。(注: いくつかのデータベースについての方法を以下に示しています)。

自動生成

これを設定する最も簡単な方法は、システム上に新しい空のデータベースを作成し、次にTSQLScriptSampleサンプル/ユーティリティプログラムでそれに接続することです。 このプログラムは、現在のLazarus開発リリースには./examples/database/tsqlscriptディレクトリに含まれていますが、以下からダウンロードすることもできます。

http://svn.freepascal.org/svn/lazarus/trunk/examples/database/tsqlscript/

コンパイルし、プログラムを実行、データソースに接続します:

tsqlscriptsample connect.png

そしてボタン、Copy table creation script をクリックし、Run scriptを実行します:

tsqlscriptsample runfirstscript.png

プログラムは成功したことを示すはずです。 同様に Copy sample data scriptRun script

問題が起こった場合には、以下の手動的方法をとることができます。

手動による生成

今後のチュートリアルで用いるために、 CUSTOMER と EMPLOYEE のテーブルを作成します。

用いるデータベースのエディタやツールから、以下の SQL コマンドを実行してください。:

CREATE TABLE CUSTOMER
(
  CUST_NO INTEGER NOT NULL,
  CUSTOMER VARCHAR(25) NOT NULL,
  CITY VARCHAR(25),
  COUNTRY VARCHAR(15),
  CONSTRAINT CT_CUSTOMER_PK PRIMARY KEY (CUST_NO)
);
CREATE TABLE EMPLOYEE
(
  EMP_NO INTEGER NOT NULL,
  FIRST_NAME VARCHAR(15) NOT NULL,
  LAST_NAME VARCHAR(20) NOT NULL,
  PHONE_EXT VARCHAR(4),
  JOB_CODE VARCHAR(5) NOT NULL,
  JOB_GRADE INTEGER NOT NULL,
  JOB_COUNTRY VARCHAR(15) NOT NULL,
  SALARY NUMERIC(10,2) NOT NULL,
  CONSTRAINT CT_EMPLOYEE_PK PRIMARY KEY (EMP_NO)
);

データベース上で確認できるように、いくつかのデータを入れておきます。まずは、クライアントのデータです。:

INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (1, 'Michael Design', 'San Diego', 'USA');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (2, 'VC Technologies', 'Dallas', 'USA');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (3, 'Klämpfl, Van Canneyt', 'Boston', 'USA');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (4, 'Felipe Bank', 'Manchester', 'England');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (5, 'Joost Systems, LTD.', 'Central Hong Kong', 'Hong Kong');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (6, 'Van der Voort Int.', 'Ottawa', 'Canada');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (7, 'Mrs. Mauvais', 'Pebble Beach', 'USA');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (8, 'Asinine Vacation Rentals', 'Lihue', 'USA');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (9, 'Fax', 'Turtle Island', 'Fiji');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (10, 'FPC Corporation', 'Tokyo', 'Japan');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (11, 'Dynamic Intelligence Corp', 'Zurich', 'Switzerland');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (12, '3D-Pad Corp.', 'Paris', 'France');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (13, 'Swen Export, Ltd.', 'Milan', 'Italy');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (14, 'Graeme Consulting', 'Brussels', 'Belgium');
INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (15, 'Klenin Inc.', 'Den Haag', 'Netherlands');

つぎに、被雇用者のデータです。:

INSERT INTO EMPLOYEE (emp_no, first_name, last_name, phone_ext, job_code, job_grade, 
  job_country, salary)
  VALUES (1,'William','Shatner','1702','CEO',1,'USA',48000);
INSERT INTO EMPLOYEE (emp_no, first_name, last_name, phone_ext, job_code, job_grade, 
  job_country, salary)
  VALUES (2,'Ivan','Rzeszow','9802','Eng',2,'Russia',38000);
INSERT INTO EMPLOYEE (emp_no, first_name, last_name, phone_ext, job_code, job_grade, 
  job_country, salary)
  VALUES (3,'Erin','Powell','1703','Admin',2,'USA',45368);

データベースを生成し、テーブルを生成し、データをあなたのデータベース環境に入力してください。

SQLite

SQLite を使う場合、sqlite の executable を実行することで、上記のデータベースをあなたのプロジェクトディレクトリに作成できます。:

sqlite employee.sqlite

次に、上記 CREATE TABLE と INSERT 宣言をコピー&ペーストしてください。

正しいデータが入っているかどうかをテストするには、以下のクエリを入力します。:

select * from customer;

セッションは以下のコマンドで終了できます。

.quit

以上より、プロジェクトのディレクトリに、 employee.sqlite というファイルが作られているはずです。

必要とされる sqlite の dll/so がインストールされていることを確認しておいてください。 - 例えば、Windows であれば sqlite3.dll が以下のディレクトリにあるはずです。

  • あなたの Lazarus とプロジェクト出力フォルダ または、
  • あなたの system ディレクトリ

また、あなたが 32-bit sqlite dll を使っている場合、 32-bit の lazarus を使う必要があります。

あなたのプロジェクトファイルをコンパイル(それが空のプロジェクトでも)して、一旦出力ディレクトリを作ります。そして、(Windows 上で) employee.sqlite データベースと dll をコピーして、そのディレクトリに入れます。

PostgreSQL

この節では、Linuxサーバとシェルが使われていると仮定します; 例えばpgadminといったGUI ツールとWindowsでも似たような手順でできるでしょう。

サーバにログインし、postgresアカウントに切り替えます

su - postgres -c psql # 直ちにpsql SQLインタープリタを起動します

データベースとテーブルのためにユーザーを作ります

CREATE USER employee WITH PASSWORD 'hellopassword'; -- of course, adjust password to taste
-- 'CREATE ROLE'といったようなメッセージが現れ成功したことがわかります。
-- 後にパスワードを変更するには、以下のようなコマンドで行えます。
-- ユーザーemployeeにパスワード '<newpasswordhere>' を与えます;

-- パスワードを期限切れにしないため。もしよりセキュリティを望むのであれば、ここは飛ばしてください:
ALTER USER employee VALID UNTIL 'infinity'; --パスワードは期限切れにならなりません

-- ここで、少し、セキュリティを厳しくする
-- ユーザーにデータベースや他のユーザーを作ることを許しません:
ALTER USER employee NOCREATEDB NOCREATEUSER; --オブジェクト作成を制限します
-- 'ALTER ROLE'のように、成功するはずです

-- employeeデータベースを作る:
CREATE DATABASE employee;
-- CREATE DATABASE のように、成功するはずです

-- データベース管理者とユーザーにすべての特権を割り当てます:
GRANT ALL PRIVILEGES ON DATABASE employee; -- TOに対して employeeデータベースの全権限を与えます
-- GRANTのように成功するはずです

-- シリアル データタイプ-またの名を、autonumber/autoincrementを作ります
CREATE TABLE customer
(
  cust_no serial NOT NULL,
  customer character varying(25) NOT NULL,
  city character varying(25),
  country character varying(15),
  CONSTRAINT integ_60 PRIMARY KEY (cust_no )
);

-- 従業員テーブルを作ります:
CREATE TABLE EMPLOYEE
(
  EMP_NO SERIAL NOT NULL,
  FIRST_NAME VARCHAR(15) NOT NULL,
  LAST_NAME VARCHAR(20) NOT NULL,
  PHONE_EXT VARCHAR(4),
  JOB_CODE VARCHAR(5) NOT NULL,
  JOB_GRADE INTEGER NOT NULL,
  JOB_COUNTRY VARCHAR(15) NOT NULL,
  SALARY NUMERIC(10,2) NOT NULL,
  CONSTRAINT CT_EMPLOYEE_PK PRIMARY KEY (EMP_NO)
);

-- これで、データを挿入するためINSERTステートメントを、上記の節からコピーアンドペーストします

-- 正しいデータが存在するかこのクエリで試験します
SELECT * FROM customer;
-- いくつかの顧客データを見ることができます

-- psqlから抜けます
\q

これで、postgresにpostgresユーザーとしてシェルログインできます

もし、サーバが、開発機ではなく他の機器ならばデータベースにネットワークアクセスできるか確かめてください。postgresドキュメンテーションを参照してください。しかし、このコマンドが動くはずです。

# nano (例えば、vim、emacs、joe...)を設定し、状況によりpostgresのバージョンナンバーによりますが、
nano /etc/postgresql/8.4/main/pg_hba.conf

このような行があること、注意:192.168.0.1は実際のLANアドレスに読み替えてください、を確かめて

#md5ハッシュパスワードを用いてローカルネットワークからアクセスを許可するには: host all all 192.168.0.1/24 md5

またはより厳しく:

# employeeユーザーによってのみemployeeデータベースにアクセスすることを許すには host employee employee 192.168.0.1/24 md5

もしこのような行がなければ最後に加え、エディタを終了します 詳細はPostgreSQLに譲ります

PostgreSQL設定を読み込みます:

 
psql

then

 
SELECT pg_reload_conf(); --設定を読み込み...
-- ...抜けてシェルに戻ります:
\q

PostgreSQLにログインテストします

Note: デフォルトではPostgreSQLは パスワードを許さない、ident/unixドメインソケットでのログインを試みます なので、ホストに対してTCP/IPを強制する:

psql -h 127.0.0.1 -d employee -U employee -W # tcp/ip経由でログインします db パスワードを入力してください

必要とされるPostgreSQLのdll/so、そして他のライブラリがインストールされていることを確認してください 例えば、Windowsではそれらは

  • Lazarus + project 出力ディレクトリおよび
  • システムディレクトリ

の双方にある必要があります。 もし、何もなくともprojectを1度出力ディレクトリにコンパイルし、Windowsでは dlls をそのディレクトリにコピーしてください。

終わりに

これで、あなたのデータベースが設定できました。初めての "本当の" チュートリアル に進みましょう。

関連情報

  • SQLdb Tutorial1/ja: DB チュートリアルの第一の部分。データベースのデータを、どのように grid に表示させるかを学びます。
  • SQLdb Tutorial2/ja: DB チュートリアルの第二の部分。データベースのデータの挿入や編集について学びます。
  • SQLdb Tutorial3/ja: DB チュートリアルの第三の部分。複数のデータベースについてのプログラムやログインフォームの使い方を学びます。
  • SQLdb Tutorial4/ja: DB チュートリアルの第四の部分。どのようにデータモジュールを用いるかを学びます。
  • Lazarus Database Overview/ja: Lazarus がサポートしているデータベースについての情報。 データベースごとの記述へのリンクを含みます。
  • SQLdb Package/ja: SQLdb パッケージについての情報
  • SQLdb Programming Reference/ja: SQLdb データベースコンポーネントの入出力の概要
  • SqlDBHowto/ja: SQLdb パッケージを用いることについての情報
  • Working With TSQLQuery/ja: TSQLQuery についての情報