포럼 회원으로 등록하신분만 다운로드가 가능합니다. 최대 업로드 가능한 용량은 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
번호 제목 글쓴이 날짜 조회 수
48 [OpenICE] OpenICE 장비와 WinCE 플랫폼 빌더 사용 관련 문... file 김재훈 2009-03-26 7770
47 [OpenICE] Intel flashloader ( 32bit data bus ) file 김재훈 2009-03-26 7296
46 ARM Boot쪽 Zero Init 쪽 관련 자료 file 김재훈 2009-03-26 7872
45 JTAG Boundaryscan Tutorial file [1] 김재훈 2009-03-26 7348
44 [OpenICE] STM32(cortex-m3) 512K Internal Flash Loader file 김재훈 2009-03-26 7544
43 [OpenICE] MBA2443(s3c2443) Nand flash 및 Device file file 김재훈 2009-03-26 7644
42 [OpenICE] s3c2410 Nand Flash Device file 및 scp 파일 file 김재훈 2009-03-26 7591
41 [OpenICE] Spider A1000 file 김재훈 2009-03-23 7851
40 [OpenICE] Spider A950 file 김재훈 2009-03-23 7448
39 [OpenICE] Spider A900 file [1] 김재훈 2009-03-23 7699
38 [OpenICE] OpenEDS v1 버전 별 모음 file 김재훈 2009-03-23 7952
37 [OpenICE] OpenEDS v2 버전 별 모음 file [3] 김재훈 2009-03-23 9653
36 [font] ttf에서 hangul/영문을 추출하는 자료를 올립니다. file 고현철 2008-12-31 7504
35 [자료] SQLite 응용하기 - 2번째 유형목 2008-12-24 7596
» [자료] SQLite 응용프로그램 만들기. 첫번째 file [1] 유형목 2008-11-12 8422
33 [자료] sqlite 컴파일하기 file [2] 유형목 2008-11-07 7566
32 [정보] 안드로이드 소스코드 빌드해보기 [2] 유형목 2008-10-26 11939
31 ALSA howto file [3] 고현철 2008-10-24 7822
30 [자료] 커널 2.6에서 USB WIFI 사용하기 file [3] 장병남 2008-10-11 7691
29 [자료] huins pro1/3 보드에 포팅된 ucos-2 source(gcc) file [1] 고도리 2008-03-07 7679

사용자 로그인