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

팁사용기

[팁] Database-3 데이타의 입력

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

본문

*시작하기 전에... 예제파일을 다운 받아서 직접 텍스트 에딧으로 보시면 그림도 볼 수 있고 편리할 것입니다..^^;;

안녕하세요?
미쉐린 김성준입니다.
데이러베이스 세번째 시간입니다.
휴가갔다온후에 여러가지 일이 있어서 강좌가 조금 늦었네요..^^;; 죄송..흘흘
이번 시간에는 지난 시간에 이어서 리얼베이직 자체내에 내장되어있는 RealSQLDatabsae의 기능중 데이타의 입력과 출력에 대해서 알아보도록 하겠습니다.
데이타베이스의 생성과 접속 등에 대해서는 지난 강좌를 반드시(?) 참조하시면 될 것 입니다...^^;;


1. 데이타베이스에 데이타의 입력
그럼 지난 번에 이어서 데이타를 입력해보도록 하겠습니다.
데이타베이스의 데이타 입력은 2가지 방법이 있습니다.
한가지는 SQL 문을 이용한 Insert 명령어를 이용한 방법이고 또 한가지 방법은 DatabaseRecord 클래스를 이용한 방법입니다.
리얼베이직에서는 후자를 추천하지만 큰 차이는 없으며 그림 이미지, 파일 등의 바이너리 데이타를 입력할 때에는 DatabaseRecord 클래스를 이용하는 것이 훨 씬 수월하다는 것을 알고 계시면 될 것 입니다.
여튼 대부분은 DatabaseRecord 를 이용한다는 것을 아시면 될 것 입니다.

1) SQL 문인 Insert 문의 사용
그럼 먼저 Insert 문에 대해서 알아보도록 하겠습니다.
우선 SQL 문인 Insert 문의 기본형에 대해서 알아보도록 하죠.

        Insert Into 테이블명(필드명1, 필드명2,...) Values(입력값1, 입력값2,...)

입니다. 대충 내용을 보시면 알겠죠. 간단합니다. Insert Into 뒤에 입력할 테이블 명을 적고 괄호 안에 입력할 필드명들을 적고 Values 라고 적은 뒤 뒤에 괄호에는 앞의 필드 수와 같게 각각의 데이타 입력 값을 넣으면 되는 것입니다.
주의할 점은 숫자와 같은 정수, 실수형 값은 그냥 숫자를 넣으면 되지만 문자형 필드 타입을 갖는 경우는 따옴표(' ') 사이에 값을 넣어야 합니다. 그럼 예를 보도록 하죠. 지난 강좌에서 만들었던 테이블을 기본으로 해서 입력 해보도록 하겠습니다.
지난 강좌에서 만들었던 테이블은 테이블명은 TestTable 문자형 Name, 정수형 Age, 문자형 Sex 필드입니다. 그럼 다음과 같은 예를 만들어 볼 수 있죠.

        Insert Into TestTable(Name, Age, Sex) Values('김영권', 20, '남')

위왁 같은 식입니다. (그런데 영권님이 20살 맞나요?...^^;;)
이해가 가시죠? 그리고 필드 명의 순서는 아무렇게 해도 됩니다. Name 필드가 뒤로 가도 되죠. 하지만 데이타의 입력도 그 앞의 필드명 순서에 맞춰줘야 합니다. 얘를 들어서 다음과 같이 말이죠.

        Insert Into TestTable(Age, Sex, Name) Values(20, '남', 김영권')

위와 같이 하면 됩니다..^^;; 간단하죠?
뭐 이게 답니다. 간단하죠? SQL 문은 알면 금방 이해되고 익힐 수 있습니다.
그럼 이제 DatabaseRecord 클래스를 이용하는 방법에 대해서 알아보도록 하죠.

2) DatabaseRecord 클래스의 이용
그럼 이제 또 다른 방법인 DatabaseRecord 클래스를 이용해보도록 하겠습니다.
이것은 리얼베이직 내에서만 사용이 되기 때문에 리어렙이직 코드식으로 예제를 작성해 보도록 하겠습니다.
예제는 앞서 했엇던 Insert 문과 같은 내용입니다.

dim RDB as RealSQLDatabase
dim rec as DatabaseRecord

rec = New DatabaseRecord  //먼저 DatabaseRecord 를 New 명령어를 통해서 초기화 합니다.

rec.Column("Name") = "김영권"
rec.IntegerColumn("Age") = 20
rec.Column("Name") = "남"

RDB.InsertRecord("TestTable", rec)

위와 같은 식입니다.
먼저 알아둬야 할 것은 DatabaseRecord 클래스에서 지원해주는 필드 타입입니다.
타입은 다음과 같습니다.

        DoubleColumn - 실수형 데이타를 입력할 때 사용됩니다.
        IntegerColumn - 정수형 데이타를 입력할 때 사용됩니다.
        Int64Column - 더욱 큰 정수를 입력할 때 사용됩니다.
        Column - 문자형 데이타를 입력할 때 사용됩니다.
        BlobColumn - 그림, 사운드, 파일 등의 바이너리 데이타를 입력할 때 사용됩니다.
        BooleanColumn - 참과 거짓을 나타내는 Boolean형의 데이타를 입력할 때 사용됩니다.
        CurrencyColumn - 고정소숫점을 다룬다고는 되어있는데 한번도 써본적은 없습니다. 비주얼 베이직에서 가끔사용하나보네요.
        JPEGColumn - JPEG 그림을 직접 넣을 때 사용됩니다. Blob 타입으로 다뤄도 되겠죠.
        MacPICTColumn - OS9시절에 지원했었던 PICT 이미지를 입력할 때 사용됩니다.
        DateColumn - 날짜를 나타내주는 Date 클래스형의 날짜 데이타를 직접 입력할 때 사용됩니다.
        


여튼 DatabaseRecord 를 이용할 경우에는 먼저 New 명령어를 통해서 초기화를 해주어야 합니다.
그리고 나서 데이타를 입력하면 되죠.
다 입력후에 끝나는 것이 아니라 RealSQLDatabase 클래스의 InsertRecord 함수 이용하여 입력 해줘야 합니다.
그래서 마지막에 RDB.InsertRecord("TestTable", rec) 라는 부분이 추가가 된 것이죠.
RDB.InsertRecord 문의 괄호 안에는 테이블명과 DatabaseRecord 클래스의 객체 명이 들어와야 합니다.
여튼 설명은 여기까지...내용은 보면 간단합니다.
그럼 실질적으로 예제를 만들어 보도록 하겠습니다.

2. 예제 수정
그럼 지난 강좌의 예제를 수정하도록 하겠습니다.
내용은 그대로 둔체 두번재 버튼의 내용만 좀 수정하도록 할 것인데요.
먼저 알아둬야 할 것이 있습니다. 지난 강좌에서 한 것은 데이타베이스를 사용하기 위한 데이타베이스 파일과 테이블을 만든 것인데요.
이것은 만들고 끝입니다. 그래서 입력 검색 등을 할 때에는 항상 다시 접속을 해줘야 한다는 것입니다.
그래서 그 과정을 좀 쉽게 하기 위해서 함수를 만들어었습니다.
DatabaseConnectMethod라는 함수구요 리턴 값으로는 RealSQLDatabse 를 결과 값으로 리턴해 주도록 했습니다.

  dim RDB as REALSQLDatabase
  dim f as FolderItem
  dim SQL as String
  
  
  f = DesktopFolder.child("TestRDB.rdb")
  if f.Exists = False then
    return nil
  end if
  
  RDB =New REALSQLDatabase
  
  RDB.DatabaseFile = f
  
  if RDB.Connect = false then
    MsgBox "connect error!"
    return nil
  end if
  
  
  return RDB


뭐 내용은 지난 번 강좌와 비슷하지만 Return 함수를 이용하여 RealSQLDatabase 를 리턴해 주도록 했습니다.



*그럼 설명은 예제파일을 다운 받으시고 강좌를 오픈하면 볼 수 있습니다.^^;;

여튼 함수를 위와 같이 만들어 주구요.(함수 만드는 법은 아시죠? Command + Option + M 키를 누르거나 Method 부분을 콘트롤을 꾸욱 누르고 클릭한 후에 추가하면 됩니다.)
그리고 두번째 버튼의 Action 이벤트에 다음과 같은 내용을 넣습니다.

  dim RDB as REALSQLDatabase
  dim rec as DatabaseRecord
  dim SQL as String
  
  RDB = DatabaseConnectMethod()  //접속 함수
  if RDB = nil then
    return
  end if
  
  //먼저 Insert 문을 이용한 입력 방법입니다.
  SQL = "Insert Into TestTable"
  SQL = SQL+"(Name, Age, Sex) Values"
  SQL = SQL+ "('김영권', 20, '남')"
  
  RDB.SQLExecute(SQL)  //Insert 문에서는 SQLExecute 함수를 이용합니다.
  if RDB.Error then
    MsgBox "데이타베이스 입력 에러~!"
    return
  end if
  
  //두번째로 DatabaseRecord 클래스를 이용해 봅니다.
  rec = new DatabaseRecord
  rec.Column("Name") = "김영권"
  rec.IntegerColumn("Age") = 20
  rec.Column("Sex") = "남"
  
  RDB.InsertRecord("TestTable", rec)
  if RDB.Error then
    MsgBox "데이타베이스 입력 에러~!"
    return
  end if
  
  MsgBox "데이타베이스 입력 OK~!"
  
  
내용이 참 많이 보이죠? 하지만 앞서 했던 내용을 추가한 것 외에는 없습니다.
참 주의할점은 SQL 문인 Insert 문을 이용할 경우에 최종 입력 방법은 RealSQLDatabase 클래스의 SQLExecute 함수를 이용해줘야 한다는 것입니다.
*검색시에는 SQLSelect 함수를 이용합니다.


입력 문을 추가한 그림 이미지(예제파일을 다운로드 한뒤에 텍스트 에딧으로 보세요..^^)



*프로젝트에서 데이타가 입력된 것을 확인할 수 있습니다.

여튼 위와 같은 예제를 통해서 실행을 하면 이제 데이타가 입력되는 것을 확인할 수 있습니다.

3. 마치며...
흠.이번시간에 검색까지 할려고 했는데 내용이 너무 많이지는 것 같군요. 조만간 Select 문을 이용한 검색에 대해서 다음 강좌에 해보도록 하겠습니다.
검색까지 마무리를 하게되면 MySQL이던 오라클이던 거의 동일한 방법이 사용되기 때문에 접속 법만 알면 잘 활용할 수 있을 것 입니다.
그럼 좋은 하루 되시구요.
다음 강좌에서 뵈요..^^;;
그럼 이만..휘릭~!

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

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

최신글이 없습니다.

최신글이 없습니다.

댓글목록 4

최원석님의 댓글

이거 다운받아서 해봤는데..왜 전 안되죠?ㅠㅠ 데이터베이스에 입력이 안되요ㅠ

김성준님의 댓글

문제없이 입력 잘 되는데요.
먼저 생성 버튼을 누르고 해보시기 바랍니다..^^;;

머그컵님의 댓글

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

그라비앙님의 댓글

전체 48 건 - 1 페이지