• 북마크
  • 추가메뉴
어디로 앱에서 쉽고 간편하게!
애플 중고 거래 전문 플랫폼
오늘 하루 보지 않기
KMUG 케이머그

팁사용기

[팁] Database-2 데이타베이스 생성

  • - 첨부파일 : Database_2.zip (67.8K) - 다운로드

본문

안녕하세요?
미쉐린 김성준입니다.
데이러베이스 두번째 시간입니다.
이번에는 리얼베이직의 데이타베이인 RealSQLDatabase 에 대해서 예제를 해보도록 하겠습니다.
내용은 데이타베이스의 생성과 접속 입니다.
이번것을 하고 나면 이제 입력과 검색을 해보면 되겠죠..^^;;
여튼 몇가지만 예제 몇가지 하고 나면 기본적인 데이타베이스 생성, 접속, 입력, 검색에 대한 방법과
SQL 문을 쉽게 익히실 수 있을 거라 기대(?) 됩니다...^^;;
그럼 시작해 볼까요?

1. 데이타베이스 생성
자 먼저 리얼베이직의 데이타베이스 시스템을 이용하기 위해서는 앞서 처음 강좌에서 말씀드린 것 처럼 RealSQLDatabase 와 Create SQL 문을 알아야 합니다. 그리고 리얼베이직 데이타베이스 시스템은 별도의 서버를 이용하는 것이 아니라 별도의 파일 시스템을 만들어줘야 하기 때문에 FolderItem 클래스도 알아야 합니다.
그럼 먼저 데이타베이스의 생성에 대해서 알아보도록 하겠습니다.

1) 파일의 생성
먼저 FolderItem 부분에 대해서 알아보도록 하겠습니다.
데이타가 저장될 파일이 있어야 하는데요. 이는 리얼베이직의 파일 시스템을 다루는 것 처럼 해주면 됩니다.

dim f as FolderItem

f = DesktopFolder.child("TestRDB.rdb")

위의 내용에서 DeskTopFolder 라는 부분이 있는데요. 이는 파인더의 데스크탑을 나타냅니다. 그리고 Child 라는 부분은 데스크탑에 생성되는 파일이나 폴더를 그 자식 수준으로 여겨준다는 것이겠죠?
따라서 위의 코드를 실행하면 TestRDB.rdb 라는 파일이 데스크탑에 생깁니다.
그럼 데이타베이스의 테이블이 생성될 공간은 마련 됐습니다.
이제 데이타베이스를 생성해 보도록 하죠.

2) 데이타베이스의 공간 생성
자 이제는 먼저 준비 과정이 있습니다.
먼저 데이타베이스를 다루기 위한 RealSQLDatabase 클래스의 객체를 생성해주고 이를 통해서 데이타베이스 테이블을 생성해 주면 됩니다.

* 여기에서 테이블이라 함은 데이타베이스 내에서 데이타를 저장하기 위한 그룹이라고 보면 됩니다. 예를 들어서 주소록이라고 하면 주소테이블에 주소의 데이타를 넣는 이런식이 되는 것이죠. 테이블은 여러개를 생성할 수 있으며 하나의 테이블 내에는 여러개의 데이타가 들어갈 수 있는 것은 당연함이겠죠..^^;; 테이블끼리 연동해서 검색해서 결과를 내는 것을 Join 한다(?)라고 하는데 이런것은 뭐 몰라도 되고...나중에 설명할 기회가 생기겠죠..^^;;

dim RDB as REALSQLDatabase


RDB = New REALSQLDatabase

RDB.DatabaseFile = f

if RDB.CreateDatabaseFile = false then
MsgBox "create error!"
return
end if

if RDB.Connect = false then
MsgBox "connect error!"
return
end if

위의 내용은 우선 RDB 라는 RealSQLDatabase 의 객체(?)를 New 명령어를 통해서 생성해주는 것을 나타냅니다. 쉽게 말하면 데이타베이스를 다루기 위해서는 RealSQLDatabase 클래스 타입의 무언가를 선언해줘야 하는데요. 이를 해주는 것이 New 라는 것이구요. 그게 위의 예에서 확인할 수 있는 것입니다. 그리고 이것을 변수라고 해도 솔직히 무방한데요. 원래는 "객체"라고 합니다요..^^;; 데이타베이스를 다루기 위한 선언값, 설정값, 설정변수, 설정객체 등으로 생각하시면 됩니다....아 어렵다..-__-;;
여튼 RDB 라는 RealSQLDatabase 타입의 객체를 선언해주고 나서 그 속성에 보면 DatabaseFile 이라는 속성이 있는데요. 이곳에 처음에 만들어준 FolderItem 객체(? 또는 변수) 를 대입(? 넣어) 줍니다. 그리고 CreateDatabaseFile 이라는 RealSQLDatabase 의 함수를 이용해서 실질적인 데이타베이스 공간을 만들어 줍니다. 여기에서 CreateDatabaseFile 이라는 함수는 리턴 값으로 Boolean(참 또는 거짓)형의 값을 리턴합니다. 따라서 If 문을 통해서 이 값이 거짓이면 에러라는 표시를 해주고 작업을 멈추도록 했습니다. 보통 True 값이면 아무문제 없는 것이고 False 값이면 문제가 있다는 것이죠. 값이 False 일 때에는 계속 진행하게 한다 하더라도 제대로 작업이 이루어 지지 않거나 프로그램이 비이상적으로 종료가 되버릴 수 있습니다..^^;;
여튼 그 다음에는 Connect 라는 명령어를 통해서 데이타베이스 파일과 통신(? 여러가지 작업을 할 수 있는 것을 말하죠.)을 하기 위해서 데이타베이스에 접속을 해줍니다. 파일 형식이라 하더라도 다른 데이타베이스서버에 접속하는 것과 같이 Connect 명령어를 사용해줍니다. 그리고 이 명령어를 통해서 MySQL 이나 오라클과 같은 데이타베이스 서버에도 동일하게 접속할 수 있습니다. 그리고 Connect 라는 함수 역시 Boolean 형의 값을 리턴해주기 때문에 if 조건문을 통해서 에러가 생길 경우 작업을 멈추도록 했습니다.

3) 테이블 생성
자 이제는 파일도 만들었고 공간설정도 했으니 실질적인 데이타가 들어가는 테이블을 만들어줘야겠죠.
테이블이 없으면 말이죠. 데이타를 넣을 수도 없습니다.
그럼 이제 테이블을 만들어 보도록 하겠습니다.
다음의 예제를 보도록 하세요.


dim SQL as String

SQL = "Create Table TestTable("
SQL = SQL+"Name varchar, "
SQL = SQL+"Age integer, "
SQL = SQL+"Sex varchar"
SQL = SQL+")"

RDB.SQLExecute(SQL)
if RDB.Error then
msgbox "Table Create Error~!"+" "+str(RDB.ErrorCode)+" "+RDB.ErrorMessage
Return
end if

RDB.Close


자아 위의 내용에서 첫번째 줄에는 SQL 이라는 문자형 변수가 선언되어있습니다.
이름 그대로 여기에 테이블을 생성하기 위한 Create SQL 문을 생성하기 위함이죠.
중간에 많은 라인의 SQL 변수에 값을 넣는 부분이 있는데 한줄로 쓰자면 다음과 같습니다.

SQL = "Create Table TestTable(Name varchar, Age integer, Sex varchar)"

하지만 왜 저렇게 많이 라인을 나누어서 썼을 까요? 테이블을 생성하다보면 많은 필드명을 넣어서 만들고 특히 검색시을 위한 Select 문을 적을 때에는 많은 조건문을 적게 됩니다. 따라서 위와 같이 해주는 것이 가독성을 좋게 하고 수정을 쉽게 해주죠.
프로그램의 코드를 작성할 때 유의 할점 중 하나는 옆으로 길게 쓰지 말아라 하는 것 입니다. 뭐 제 개인적인 생각이지만..^^;;
뭐 여튼....그러합니다.
아~!..그리고 필드에 대해서 설명을 하지 않았군요. 테이블은 실질적인 데이타가 들어가는 공간이라고 했습니다 그 공간에 이름을 정해준 것이구요. 그 테이블을 구성해주는 하나하나의 요소가 필드입니다 위의 예에서는 Name, Age, Sex(성별을 말합니다. 이상한 생각하지 마시기를..^^;;) 가 필드가 되겠죠. 그리고 각각의 필드는 변수와 같이 타입을 갖습니다. 타입은 데이타베이스 마다 지원해주는 것이 조금씩 다르지만 정수형, 문자형 이런거은 동일 합니다. 생성시에 조금씩 표현이 다르기도 합니다. 지금은 RealSQLDatabase 에 맞는 생성법이구요. 나중에는 MySQL 을 이용하도록 할 것 입니다.
여튼 SQL 문을 좀 하나하나 따져보면요. 처음에는 Create 가 오구요. 그 다음에 Table 이라는 말이 나오죠. 여기까지는 항상 똑같이 됩니다. 그리고 테이블명을 넣어주시면 되구요. 주의할점은 테이블명이나 필드명은 띄어쓰기를 하면 안된다는 점입니다. 그리고 괄호 안에 필드명과 타입이 들어가고 각각 콤마로 구분이 되구요. 마지막에는 괄호로 닫아줍니다.
간단히 정리하면 다음과 같습니다.

Create Table 테이블명 (필드명1 타입, 필드명2 타입...)

뭐 위의 예는 간단히 한것이니까 여기까지만 알면 됩니다.
그리고 다음에는 RealSQLDatabase 에 있는 SQLExecute 함수를 이용해서 위의 SQL 문을 실행해주는 부분입니다.간단히 다음과 같이 하면 되죠.

RDB.SQLExecute(SQL)

SQL 문을 실행해주는 함수는 2가지가 있는데요. Create, Insert, Update, Delete 문일 경우에는 SQLExecute 함수를 사용해줍니다.
그리고 Select 문일 경우에는 SQLSelect 함수를 사용해주면 됩니다. 간단하죠. 인수로 문자형 SQL 문장을 요구하기 때문에 문자형 변수 SQL 을 그냥 대입했구요. 간단한 경우라면 다음과 같이 표현을 해도 무방합니다.

RDB.SQLExecute("Create Table TestTable(Name varchar, Age integer, Sex varchar)"

동일한 결과를 나타내 줍니다. 편한 방법대로 작성하면 됩니다...^^;;
그리고 생성후에 문제가 있는지 없는지를 확인하기 위해서는 RealSQLDatabase의 Error 속성을 통해서 확인 가능합니다. 이 값이 True 면 에러가 있어서 제대로 작업을 수행하지 못했음을 말합니다. 즉 위의 경우에는 테이블이 제대로 생성이 안되 것이죠.
False 값이면 에러가 없는 것이구요.
마지막에 Close 함수를 통해서 데이타베이스를 닫아줍니다.


마지막으로 순서를 다시 정리해보자면 파일 생성, 데이타베이스 설정, 테이블 설정 이런 순이 되겠군요..^^:;
여튼 위의 코드를 정리해서 보자면 다음과 같습니다.

dim RDB as REALSQLDatabase
dim f as FolderItem
dim SQL as String


f = DesktopFolder.child("TestRDB.rdb")


RDB = New REALSQLDatabase

RDB.DatabaseFile = f

if RDB.CreateDatabaseFile = false then
MsgBox "create error!"
return
end if

if RDB.Connect = false then
MsgBox "connect error!"
return
end if


//Create Group Table
SQL = "Create Table TestTable("
SQL = SQL+"Name varchar, "
SQL = SQL+"Age integer, "
SQL = SQL+"Sex varchar"
SQL = SQL+")"

RDB.SQLExecute(SQL)
if RDB.Error then
msgbox "Table Create Error~!"+" "+str(RDB.ErrorCode)+" "+RDB.ErrorMessage
Return
end if

RDB.Close


실질적인 내용은 예제파일을 통해서 확인해 보면 됩니다.
예제를 실행해서 버튼을 눌러보면 데스크탑에 "TestRDB.rdb"라는 파일이 생긴 것을 확인할 수 있을 것 입니다.

4) 데이타베이스 확인
흠.그럼 제대로 생성이 됐나 확인해보도록 하죠. 데스크탑에 생긴 파일을 리얼베이직의 프로젝트에 드래그해서 넣어봅니다.



그리고 TestRDB를 더블클릭해 봅니다. 그러면 별도의 데이타베이스를 수정하거나 확인할 수 있는 윈도우가 나타나구요.
여기에서 TestTable 이 생성된 것을 확인할 수 있습니다. TestTable 을 클릭해서 제대로 필드가 들어갔는지도 확인해 보세요..^^;;




오늘의 강좌는 여기까지 입니다. 다음에는 접속 부분을 마무리 지어 보도록 하겠습니다. 접속도 간단하니 금방 끝날 거에요..^^;;
접속 뒤에는 입력, 그리고 검색...수정...헥헥 할것이 많군요.
그럼 좋은 하루 되세요.


PS. 오타, 오류, 질문에 대해서는 게시판에 여지없이 리플 달아주세요.
그럼 이만.휘릭~!

from michelin
0 0
로그인 후 추천 또는 비추천하실 수 있습니다.
포인트 5,044
가입일 :
2004-01-25 23:38:19
서명 :
미입력
자기소개 :
미입력

최신글이 없습니다.

최신글이 없습니다.

댓글목록 1

머그컵님의 댓글

배우는데 도움이 팍팍되네요.

전체 48 건 - 1 페이지