포럼 회원으로 등록하신분만 다운로드가 가능합니다. 최대 업로드 가능한 용량은 1GB 입니다.

SQLite 를 사용하다 보면 임베디드 시스템에서도 데이터베이스를 쓸수 있다는 사실에 가끔씩 스스로도 놀라게 됩니다.

gdbm이나 기타 SQL을 사용하지 않는 파일형태의 데이터 저장방법을 사용하고 있다면 지금 당장 SQLite프로그램으로 바꾸시기 바랍니다.

SQL 구문 몇개만 알고 있으면 C 프로그래밍으로 데이터의 저장, 검색 처리를 임베디드 시스템에서도 멋지게 해낼수 있습니다.

임베디드 장비의 환경설정 파일, 발생되는 데이터 내용, PDA의 주소록, 일정관리 프로그램등을 손쉽게 만들어 낼수 있습니다.

다음의 예제를 한번 따라서 컴파일 해보세요.

내용은 별것 아닙니다. 주소에 해당하는 스트링을 인자값으로 넘겨주면 그에 해당하는 우편번호와 주소지를 출력해줍니다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "sqlite3.h"

int main(int argc, char* argv[])
{
    sqlite3 *db;

    char **pResult;
    int nrow, ncol, i, j, k;
    char *errmsg = 0;
    char *query;
    int rc = 0;
    size_t len=0;

    if(argc != 2)
    {
        fprintf(stderr, "검색할 주소를 입력하세요. 예) ./post_search 가산동n");
        return 0;
    }

    rc = sqlite3_open("./POST.DB", &db);
    if(rc)
    {
        fprintf(stderr, "Can't open database: %sn", sqlite3_errmsg(db));
        sqlite3_close(db);
        return 1;
    }

    // Calculate Query length.
    len = snprintf(NULL, 0, "select post_no as 우편번호, address as 주소 from post_number where address like'%%%s%%';", argv[1]);

    // 메모리 할당
    query = malloc(len + 1);

    sprintf(query, "select post_no as 우편번호, address as 주소 from post_number where address like'%%%s%%';", argv[1]);

    if(!query)
    {
        fprintf(stderr, "Can't find Query !");
        return 0;
    }

    rc = sqlite3_get_table(db, query, &pResult, &nrow, &ncol, &errmsg);
    // 메모리 해제
    free(query);

    if(rc == SQLITE_OK)
    {
        k = 0;
        for(i=0;i< nrow+1;++i) // nrow+1 : because print column name
        {
            for(j=0;j<ncol;++j)
            {
                printf("%s |", pResult[k++]);
            }
            printf("n");
        }
    }
    else
    {
        printf("SQLite Error : %sn", errmsg);
    }

    sqlite3_free_table(pResult);
    sqlite3_close(db);

    return rc;
}

$ gcc -g -Wall -c post_search.c -I/home/embryo/sqlite_example/include
$ gcc -g -Wall -o post_search post_search.o -L/home/embryo/sqlite_example/lib -lsqlite3

소스코드는 post_search.c 실행파일 이름은 post_search 로 지정합니다. 우편번호 데이터가 들어 있는 파일은 POST.DB 라는 파일로 첨부했습니다.

컴파일 옵션 설명
---------------
-g 디버깅 정보를 넣으라는 옵션
-I (대문자 i)는 헤더파일의 위치를 지정
-Wall 컴파일할때 모든 경고 메세지를 출력
-c 컴파일 옵션
-o 생성되는 파일 지정
-L 라이브러리 경로 지정
-lsqlite3  -L 옵션으로 지정한 경로에 libsqlite로 시작하는 공유라이브러리를 링크라하는 옵션

실행방법
--------
$ ./post_search 가산
우편번호 |주소 |
469-841 |경기 여주군 대신면 가산리 |
467-861 |경기 이천시 부발읍 가산리 |
487-810 |경기 포천시 가산면 |
487-811 |경기 포천시 가산면 가산리 |
487-812 |경기 포천시 가산면 감암리 |
487-813 |경기 포천시 가산면 금현리 |
487-812 |경기 포천시 가산면 마산리 |
487-812 |경기 포천시 가산면 마전리 |
487-811 |경기 포천시 가산면 방축리 |
487-813 |경기 포천시 가산면 우금리 |
487-813 |경기 포천시 가산면 정교리 |
621-871 |경남 김해시 한림면 가산리 |
627-851 |경남 밀양시 부북면 가산리 |
664-811 |경남 사천시 축동면 가산리 |
626-821 |경남 양산시 동면 가산리 |
660-871 |경남 진주시 이반성면 가산리 |
678-871 |경남 합천군 묘산면 가산리 |
730-861 |경북 구미시 도개면 가산리 |
766-871 |경북 영덕군 창수면 가산리 |
769-861 |경북 의성군 가음면 가산1리 |
769-862 |경북 의성군 가음면 가산2리 |
769-861 |경북 의성군 가음면 가산3리 |
769-861 |경북 의성군 가음면 가산4리 |
769-861 |경북 의성군 가음면 가산리 |
718-910 |경북 칠곡군 가산면 |
718-911 |경북 칠곡군 가산면 가산리 |
718-912 |경북 칠곡군 가산면 금화리 |
718-912 |경북 칠곡군 가산면 다부리 |
718-913 |경북 칠곡군 가산면 석우리 |
718-911 |경북 칠곡군 가산면 송학리 |
718-913 |경북 칠곡군 가산면 심곡리 |
718-911 |경북 칠곡군 가산면 용수리 |
718-911 |경북 칠곡군 가산면 응추리 |
718-912 |경북 칠곡군 가산면 천평리 |
718-912 |경북 칠곡군 가산면 학산리 |
718-913 |경북 칠곡군 가산면 학상리 |
718-913 |경북 칠곡군 가산면 학하리 |
153-023 |서울 금천구 가산동 |
153-800 |서울 금천구 가산동 4~43 |
153-801 |서울 금천구 가산동 44~239 |
153-802 |서울 금천구 가산동 316~356 |
153-803 |서울 금천구 가산동 371~716 |
153-804 |서울 금천구 가산동 769~772 |
153-710 |서울 금천구 가산동 수출2공단 |
153-754 |서울 금천구 가산동 두산아파트 |
153-773 |서울 금천구 가산동 SK트윈테크타워 |
153-770 |서울 금천구 가산동 코오롱테크노밸리 |
153-771 |서울 금천구 가산동 대륭테크노타워1차 |
153-771 |서울 금천구 가산동 대륭테크노타워2차 |
153-772 |서울 금천구 가산동 대륭테크노타워3차 |
153-774 |서울 금천구 가산동 대륭테크노타워5차 |
153-774 |서울 금천구 가산동 대륭테크노타워6차 |
153-774 |서울 금천구 가산동 대륭테크노타워7차 |
153-775 |서울 금천구 가산동 대륭테크노타워8차 |
153-768 |서울 금천구 가산동 IT캐슬 |
153-777 |서울 금천구 가산동 스타밸리 |
153-779 |서울 금천구 가산동 뉴티캐슬 |
153-769 |서울 금천구 가산동 SJ테크노빌 |
153-790 |서울 금천구 가산동 삼성리더스타워 |
153-759 |서울 금천구 가산동 월드메르디앙2차 |
153-781 |서울 금천구 가산동 월드메르디앙1차 |
153-787 |서울 금천구 가산동 우림라이언스2차 |
153-786 |서울 금천구 가산동 우림라이온스밸리 |
153-783 |서울 금천구 가산동 벽산디지털2차밸리 |
153-789 |서울 금천구 가산동 에이스테크노타워10차 |
153-782 |서울 금천구 가산동 남성프라자(에이스9차) |
517-801 |전남 담양군 담양읍 가산리 |
535-881 |전남 신안군 비금면 가산리 |
590-831 |전북 남원시 운봉읍 가산리 |
314-811 |충남 공주시 의당면 가산리 |
336-891 |충남 아산시 선장면 가산리 |
330-821 |충남 천안시 입장면 가산리 |
350-821 |충남 홍성군 금마면 가산리 |
395-861 |충북 단양군 단성면 가산리 |
365-801 |충북 진천군 진천읍 가산리 |
363-841 |충북 청원군 남일면 가산리 |

윤승환

2008.11.19 01:22:42
*.78.49.252

sqlite로 mysql dbms와 비슷하게 만든 국내 프로젝트도 있던데요..
2006년 이후로 업데이트가 되지 않고 있는거 같네요...
기존의 dbms사용에 익숙하신 분들은 참고하실만 할꺼 같습니다.
위치는
http://sqlitedbms.sourceforge.net/index.htm 입니다.
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
88 리눅스 커널 부팅후 i2c버스에 연결된 장치 찾는 테스트 프로그램입... file 2009-06-12 10484
87 OpenRISC OR1200 Toolchain - GCC 4.2.2 file 김재훈 2009-07-03 10136
86 SD, CF card Dump 프로그램(DD for Windows) file [3] 김경수 2010-08-06 10103
85 USB 케이블만 가지고 리눅스 NFS 개발환경 만들기 file 유형목 2010-10-24 10044
84 [OpenICE] OpenEDS v2 버전 별 모음 file [3] 김재훈 2009-03-23 9659
83 나만의 "N 드라이브" 만들기 file [11] 유형목 2010-07-03 9511
82 포팅중인 mplayer for Android입니다. [2] pinebud 2010-07-19 9501
81 실시간 온라인 강의 시스템 - MegaCast 류종택 file [1] 류종택 2010-12-08 9381
80 [OpenICE] AT91SAM7S / AT91SAM9260 디바이스 파일 file 김재훈 2009-03-26 9058
79 [re] 삼성 S3C2410 Datasheet [한글판] 박인규 2008-09-22 9043
78 Visual Studio 2005 SP1 업데이트 패키지 file 김재훈 2009-03-27 8950
77 안드로이드 사용방법에 관련된 문서 file [2] 유형목 2010-05-31 8781
76 OpenRISC OR1xxx Processor (OR32) IROM용 DNW 0.1r1 file JhoonKim 2010-02-23 8711
75 dm9000a/b u-boot용 device driver file [1] 고현철 2007-10-23 8587
74 OpenRISC OR1xxx Processor (OR32)용 U-Boot v1.3.4 file [2] 김재훈 2009-10-13 8560
73 [ODROID-T] GPS test application file [1] 이제현 2010-05-29 8528
» [자료] SQLite 응용프로그램 만들기. 첫번째 file [1] 유형목 2008-11-12 8422
71 TI - C67xx DSP용 XDS510PP Emulator User Guide file 김재훈 2009-04-27 8275
70 OpenRISC OR1xxx Processor (OR32) IROM용 Serial Download... file [2] 김재훈 2009-10-13 8249
69 AESOP 문서양식 file [1] 고현철 2010-01-06 8176

사용자 로그인