Firebird의 Firebird ISQL Tool을 실행해서 아래 녹색 상자의 Source를 전체를 붙여 넣어보면 어떻게 동작하는지 대충 알 수 있다.

create database 'TestAutoNoDb.fdb' user 'sysdba' password 'masterkey';

set autoddl off;

create table AutoNoTable (
  AutoId   integer not null,
  Fld_Int  integer,
  Fld_Char char(200),
 
  constraint pk_AutoNoTable primary key (AutoId)
);

create generator gen_AutoId;

set term ^;

create trigger trg_AutoNoTable_SeqNo for AutoNoTable
active before insert position 1
AS
begin
  if (new.AutoId is null) then
    new.AutoId = gen_id(gen_AutoId, 1);
end
^
commit work^

set term ; ^

insert into AutoNoTable (Fld_Int, Fld_Char) values (1, 'one');
insert into AutoNoTable (Fld_Int, Fld_Char) values (2, 'two');
insert into AutoNoTable (Fld_Int, Fld_Char) values (3, 'three');

commit work;

select * from AutoNoTable;



설명

// Database 만들기
create database 'TestAutoNoDb.fdb' user 'sysdba' password 'masterkey';

// 자동 Commit mode off(?)
set autoddl off;

// 자동 연번 Test용 Table 만들기
create table AutoNoTable (
  AutoId   integer not null,
  Fld_Int  integer,
  Fld_Char char(200),
 
  constraint pk_AutoNoTable primary key (AutoId)
);

// 자동 연번용 generator 만들기
create generator gen_AutoId;

// 자동 연번 Trigger 만들기
set term ^;

create trigger trg_AutoNoTable_SeqNo for AutoNoTable
active before insert position 1
AS
begin
  if (new.AutoId is null) then
    new.AutoId = gen_id(gen_AutoId, 1);
end
^
commit work^

// 데이터 추가
set term ; ^

insert into AutoNoTable (Fld_Int, Fld_Char) values (1, 'one');
insert into AutoNoTable (Fld_Int, Fld_Char) values (2, 'two');
insert into AutoNoTable (Fld_Int, Fld_Char) values (3, 'three');

commit work;

// 데이터 가져오기
select * from AutoNoTable;


실행 결과

      AUTOID      FLD_INT FLD_CHAR
============ ============ ===========
          1            1 one
           2            2 two
           3            3 three

AUTOID와 추가 하지 않아도 자동으로 연번이 생성됨

주의) 이 트리거에 문제점이 하나 있다.
연번이 가장 큰 숫자에서 시작하지 않는다. -.-;;
그래서 이 트리거를 사용하지 않고 인위적으로 AUTOID field에 높은 번호를 입력하면
자동으로 AutoID가 입력될 때 같은 번호가 나오면 Error가 발생되게 된다.


-----------------------------------------

참고

위 Source를 Firebird ISQL Tool에 붙이려면 Firebird ISQL Tool의 Caption bar에서 오른쪽 click하면 popup menu가 표시되고 편집 > 붙여넣기(P)를 선택하면 된다.

Posted by 떡잎
 Delphi에서 Firebird를 사용하기위한 무료 Component인 ZoesLib 설치하기
(ZoesLib는 Firebird 뿐 아니라 여러 다른 database도 지원한다.)

ZoesLib가 지원하는 databse들

• MySQL 3.20 - 5.0
• PostgreSQL 6.5 - 8.1
• Firebird 1.0 - 2.0
• Interbase 5.0 - 7.5
• Microsoft SQL Server 7, 2000
• Sybase ASE 12.0, 12.5
• Oracle 9i
• SQLite 2.8, 3.5

설치 SW version
  • Delphi 2006
  • Firebird 2.5
  • ZeosLib 6.6.6
1. ZeosLib 설치 순서

1) ZeosLib 사이트에서 ZeosLib를 Download한다.
http://sourceforge.net/projects/zeoslib/

2) Download한 파일의 압축을 푼다.
압축을 풀면 아래의 네개의 Folder가 만들어진다.
    - doc
    - examples
    - packages
    - src
3) Delphi가 설치된 곳의 Lib folder에 ZeosLib folder를 만들고 위의 네 folder를 복사해서 붙인다.
C:\Program Files\Borland\BDS\4.0\lib\ZeosLib

4) Packages folder의 delphi11 folder에서 groupproj를 열고 싶었지만 Delphi 2006에서는 열 수 없어서 아래의 dpk file들을 delphi에서 하나씩 열었다.
• ZCore.dpk
• ZParseSql.dpk
• ZPlain.dpk
• ZDbc.dpk
• ZComponent.dpk
그리고 위의 순서대로 아래의 그림과 같이 각 project에서 오른쪽 click을 하여 compile을 한다.


5) 위 compile을 마친 후 ZComponentDesign.dpk를 열어서 Compile한 후 Install을 한다.
그러면 아래와 같이 Form에 붙여서 사용할 수 있는 Component가 표시된다.


6) Delphi menu의 Tools > Options...를 선택하면 아래의 창이 표시된다.

Environment Options > Delphi Options > Library - Win32에서 Library를 선택하면
오른쪽에 Directories가 표시된다.

거기서 Library path, Borwsing Path, Debug DCU path에 아래의 path를 입력한다.

    ;C:\Program Files\Borland\BDS\4.0\lib\ZeosLib\src\component
    ;C:\Program Files\Borland\BDS\4.0\lib\ZeosLib\src\core
    ;C:\Program Files\Borland\BDS\4.0\lib\ZeosLib\src\dbc
    ;C:\Program Files\Borland\BDS\4.0\lib\ZeosLib\src\parsesql
    ;C:\Program Files\Borland\BDS\4.0\lib\ZeosLib\src\plain

(주의 : ZeosLib를 어느 folder에 복사했는지에 따라 위 path는 변경된다.)



7) Windows folder의 system folder에 사용하고자 하는 database의 client dll을 복사해서 붙여넣어야 된다.

Firebird의 경우 : Firebird가 설치된 folder의 bin folder에 fbclient.dll를 Windows의 system folder에 복사하여 붙여넣는다.
(default path에 설치한 경우 : C:\Program Files\Firebird\Firebird_2_5\bin)

2. ZeosLib 간단 사용법

1) Form에 먼저 Zeos Access에서 TZConnection을 붙여넣는다.


Database : Firebird Database file path를 입력한다.
Password : SYSDBA의 password를 변경하지 않았을 경우 masterkey를 입력한다.
Protocol : firebird-2.1을 선택한다.(2.5도 지원은 되는 것 같음)
User : Firebird의 기본 User 명을 변경하지 않았으면 SYSDBA를 입력한다.
Connected : true로 설정한다.

2) Form에 Zeos Access에서 TZQuery를 붙여넣는다.


Connection : 1)에서 설정한 TZConnection의 name을 선택한다.
SQL : SQL문을 입력한다. (예: select * from table명 )
Active : true로 설정한다.

3) Form에 Data Access에서 TDataSource를 붙여넣는다.


DataSet : 2)에서 설정한 TZQuery의 name을 선택한다.

4) Form에 Data Controls에서 TDBGrid를 붙여넣는다.


DataSource : 4)에서 설정한 TDataSource의 name을 선택한다.



5) F9를 눌러 Run을 하면 아래와 같이 Table에 있는 내용들이 표시된다.


Coding 없이 property 설정만으로 이렇게 Database 내용을 볼 수 있다.

----------------------

오늘 하루 종일 Firebird 설치하고 사용방법 정리하다가 하루가 다가는군
몇 일지나면 바로 잊어버려서 우선 설치 방법과 사용방법을 정리


Delphi 2010인 경우는 아래 link 참조

윈도7 델파이 2010에서 Zeos 빌드하기


Posted by 떡잎
FlameRobin은 Firebird를 조금 Visual하게 사용할 수 있게 해주는 Tool이다.
여기에


1. FlameRobin 설치

1) FlameRobin사이트에서 FlameRobin을 Download한다.
http://flamerobin.org/

2) FlameRobin의 Setup 파일을 실행하면 아래의 창이 표시된다.
[Next] button을 눌러 Setup을 시작한다.


3) License에 동의하고 [Next] button을 누른다.


4) Setup할 Folder를 입력하고 [Next] button을 누른다.


5) 시작 menu에 표시될 표시명을 입력하고 [Next] button을 누른다.


6) 바탕화면이나 빠른 실행에 FlameRobin Icon을 표시할 것있지 선택하고 [Next] button을 누른다.


7) [Install] button을 눌러 Install을 시작한다.


8) Install이 완료되면 아래의 창이 표시된다.
[Finish] button을 눌러 Setup을 끝낸다.


위 창에서 FlameRobin 실행을 선택하고 [Finish] button을 누르면 FlameRobin이 실행된다.



2. FlameRobin에서 Firebird Database만들기

Firebird에서는 Database를 만들려면 열심히 Text를 입력해야 되지만 FlameRobin에서는 어렵지않게 Database를 만들 수 있다.

1) Database menu에서 Create new database...를 선택한다.


2) 만들 Database의 정보를 입력한다.


    Display name : FlameRobin에 표시될 Database명
    Database path : Firebird Database file명
    User name : 기본 Adiministrator의 User name은 "SYSDBA"이다.
    Password : SYSDBA의 기본 password는 "masterkey"이다.
    나머지 다른 항목들은 Default로 사용했다.
   
    다른 항목들이 궁금하신 분들은 검색해 보세요. -.-;;

3) 이렇게 하면 아래와 같이 FlameRobin에 새로운 Database가 생성된다.


4) 만든 Databse에서 오른쪽 click을 하면 아래의 popup menu가 나온다.
Connet를 선택한다.

Database에 접속하면 아래와 같이 database에 각 항목들이 표시된다.


2. FlameRobin에서 Table 만들기

1) 만든 Database의 Table 항목에서 오른쪽 click을 하여 Create new를 선택한다.


2) Create new를 선택하면 아래와 같은 창이 표시된다.
Table을 만들기 위한 예제 SQL문의 기본적으로 표시된다.


3) 기존 SQL문을 지우고 만들려는 Table에 SQL을 입력한 후 Statement menu 밑에 있는 [▶](Excute statment) button을 누른다.

Table을 만들기 위한 자세한 SQL문은 아래의 link 참조
Firebird Create Table


4) [▶](Excute statment) button을 누르면 Statistics에 SQL문에 문제가 있는지 없는지를 알 수 있다. 문제가 없을 경우 Commit transaction button이 Enable된다.
Commit transaction button을 누르면 Table이 만들어진다.


5) Table이 정상적으로 만들어지면 밑에 있던 Statistics가 없어진다.

그리고 Database 밑에 생성한 Table이 표시된다.

Posted by 떡잎

1) Firebird사이트에서 Firebird를 다운로드 한다.
http://www.firebirdsql.org/

2) 언어를 선택한다.

3) Setup을 시작한다.

4) License문 동의하고 Setup을 진행한다.

5) Infomation을 읽고(?) Setup을 진행한다.

6) Firebird를 설치한 folder를 선택한다.

7) 설치할 Components를 선택한다.
Classic Server binary를 설치할 것인지 Super Server binary를 설치할 것인지는 아래 사이트를 보면 어떤 것이 좋은지 친절하게 영어로 설명되어있다. -.-

http://www.firebirdsql.org/manual/qsg15-classic-or-super.html

나도 영어가 짧아서 내가 설명을 쓰기는 모호하지만 아래 글을 보면
Windows OS를 사용하면 Superserver가 좋은가 보다. ^^;

On Windows, choose Superserver.

8) 시작 Menu에 표시할 표시명을 입력한다.

9) Firebird의 시작 Option이나 Server의 실행 Option을 설정한다.


Guadian은 Service로 실행시킬 때는 필요없다고 하면서 Service를 설치할 때도
선택이 Enable로 되어있는 이유는 뭘까?

What is the Firebird Guardian?

특별히 문제가 없으면 그냥 Default 설정으로 써도 문제없을 것 같다.

10) Install을 시작한다.

Install을 진행하면 아래 화면이 표시되며 Install이 진행된다.

11) 설치가 완료되면 정보 표시화면이 표시된다.

12) 설치를 완료하기 위해서는 '다시 시작'할 필요가 있다.

13) Firebird가 설치되면 시작 > 모든 프로그램에 Firebird가 표시된다.

14) Firebird ISQL Tool을 사용하여 Database를 생성하거나 생성한 Database에 접속할 수 있다.

이렇게 Firebird를 설치와 확인 작업이 끝나게 된다.

(개인적으로 처음 DB를 써본것이 MDB라 이렇게 text base로 된 database는 감이 잘 안온다. -.-)

-----------------------------------------------------------------

Firebird Database관련 참고 사항

Firebird를 설치할 때 위에 9)번 항목에 있는 "Install Control Panel Applet?"을 선택하면 아래의 제어판의 밑에 쪽에 보면 "Firebird Server..."라는 항목을 볼 수 있다.


이 Icon을 실행하면 아래의 창이 표시된다.


여기서 Firebird를 Service로 시작할 것인지 application으로서 실행할 것인지 설정할 수 있고 Windows가 시작할 때 자동으로 실행시킬 것인지 수동으로 실행시킨것인지를 선택할 수 있다.

Firebird가 동작하고 있는지 확인하려면

제어판의 관리도구에 서비스를 실행하면


아래와 같은 서비스 창이 표시되고
Firebird Server - DefaultInstance가 시작되어있느지 확인할 수 있다.

Posted by 떡잎
파이어버드에서 INSERT할 때 CRLF를 추가하는 방법

INSERT INTO TEST_TABLE(testCode, testMsg)
 VALUES (1, '1 Row'||ASCII_CHAR(13)||ASCII_CHAR(10)||'2 Row')

알고나면 간단한데...
Posted by 띠리
Firebird의 Timestamp에서 특정 년월일만을 검색하는 방법

select * from testLOG
where
    extract(year from logStamp) > 2007 and
    extract(month from logStamp) = 1 and
    extract(day from logStamp) < 10 and

extract를 사용하면 TIMESTAMP형 필드에서 년,월,일에 대해 검색하기가 쉬워진다.
Posted by 띠리

Firebird의 Timestamp형을 문자열로 바꾸는 SQL문

SELECT CAST(timestamp_column AS VARCHAR(24)) FROM table_name;

이거 찾는라고 반나절 걸렸다.
Posted by 띠리

Timestamp형에서 날짜와 시간을 분리하는 SQL
SELECT 
    cast(extract(day from myTIMESTAMP)|| '.'||
           extract(month from myTIMESTAMP)|| '.'||
           extract(year from myTIMESTAMP) as date) ,
    cast(extract(Hour from myTIMESTAMP)|| ':'||
           extract(Minute from myTIMESTAMP)|| ':'||
           extract(Second from myTIMESTAMP) as Time) 
FROM MyLOG

위의 SQL문을 쓰면 Timestamp형 필드를 날짜형과 시간형으로 바꾸어준다.

TIMESTAMP형 WHERE문
SELECT  * FROM MyLOG
WHERE myTIMESTAMP > '2009-1-7 12:00:00'

SELECT  * FROM MyLOG
WHERE myTIMESTAMP > '2009-1-1'

Timestamp에서 WHERE문을 쓸 때는 날짜만 써도 된다.
아마도 날짜만 입력하면 뒤에 자동으로 00:00:00으로 처리하는 것 같다.
Posted by 띠리
TEST 로그 테이블
CREATE TABLE TestLOG
(
        TestDATE  Date   NOT NULL,
        TestTIME Time   NOT NULL,
        LogText varCHAR(255)
);

현제 날짜 시간 입력하는 SQL 문
INSERT INTO TestLOG (TestDATE, TestTIME, LogText)
VALUES (
    cast('now' as DATE),
    cast('now' as TIME),
   'TEST LOG INSERT DATA',
);

이렇게 하면 SQL문 만으로 오늘 날짜와 시간이 자동으로 입력된다.
Posted by 띠리
Data Type Specifics
Name Size Range/Precision Description

Varchar(n) n chars 1 to 32767 bytes Variable length char or text string. NB, multi-byte character sets reduce number of possible characters proportionately

Smallint 16 bits -2^15 to 2^15-1 Signed short (word)

Integer 32 bits -2^31 to 2^31-1 Signed long (longword)

Float 32 bits 3.4 x 10^-38 to 3.4 x 10^38 Accurate to 7 digits

Double Precision 64 bits 1.7 x 10^-308 to 1.7 x 10^308 Accurate to 15 digits

Timestamp 64 bits (2 X 32 bits) 1 Jan 100 CE to 28 Feb 32768 CE Includes time and date as two 32-bit structures

Date 32 bits 1 Jan 100 CE to 28 Feb 32768 CE Date only. Time part is not stored.

Time 32 bits 0:00 to 23:59.9999

BLOB <32GB -- Stores data of variable indeterminate size

Numeric (precision, scale) Variable (16, 32, or 64 bits) specifies exactly precision digits of precision Example: Numeric(10,3) holds numbers accurately in the following format: ppppppp.sss

Decimal (precision, scale) Variable (16, 32, or 64 bits) specifies at least precision digits of precision Example: Decimal(10,3) holds numbers accurately in the following format: ppppppp.sss



원문
Firebird Novice's Guide
Posted by 띠리
BLOG main image
프로그래밍 공부하면서 써가는 개인 노트 (따라서 여기에 씌여있는 소스의 신빙성을 보장 못함 -.-;;) 이 블로그 보면서 틀린 점이 있으면 꼬옥 알려주세요. by 띠리

공지사항

카테고리

분류 전체보기 (323)
Win32 SDK 초보 (27)
통신관련 (11)
MFC TIP (20)
C/C++ TIP (10)
개발기타 (10)
링크 (2)
견물생심 (24)
이것저것 (8)
용어메모 (3)
데이터베이스 (32)
비주얼 베이직 (10)
하드웨어 (3)
C# (42)
Xcode (3)
델파이 (82)
홈페이지 (5)
MindStorm (0)
낙서 (5)
스크래치 (0)
기타 (6)
아두이노 (1)
라즈베리파이 (2)
안드로이드 (6)
파이썬 (0)
WEB (2)
Total : 987,326
Today : 404 Yesterday : 409