IOS를 사용한 내장형 SQLite3

3798 단어
SQLite3 소개
SQLite3는 대량의 데이터를 저장하고 검색하는 데 매우 효과적이며 데이터에 대해 복잡한 집합을 할 수 있어 대상을 이용하여 이런 조작을 하는 것보다 결과를 얻는 속도가 빠르다.
예를 들어, 응용 프로그램에서 응용 프로그램의 모든 객체 중 특수 필드의 합계를 계산해야 하거나, 특정 조건에 맞는 객체의 합계만 계산해야 하는 경우 SQLite3는 각 객체를 메모리에 로드하지 않고 이 작업을 수행할 수 있습니다.SQLite3에서 집합을 가져와 모든 대상을 메모리에 불러온 다음 그것들의 값을 계산하는 데 몇 개의 수량 등급이 빠르다.날개가 돋보이는 삽입식 데이터베이스로서 SQLite3는 조회 속도를 높일 수 있는 테이블 인덱스를 만드는 도구를 포함한다.
SQLite3은 SQL(Structured Query Language, 구조화된 쿼리 언어)을 사용합니다.SQL은 관계 데이터베이스와 상호작용하는 표준 언어다.관계 데이터베이스(SQLite3 포함)와 대상을 대상으로 하는 프로그래밍 언어는 완전히 다른 방법으로 데이터를 저장하고 조직한다.이러한 방법은 매우 다르기 때문에 둘 사이를 전환하는 데 사용되는 각종 기술과 많은 라이브러리와 도구가 등장했다.이러한 서로 다른 기술을 통칭하여 대상 관계 매핑(object-relational mapping, ORM)이라고 한다.현재 많은 중ORM 도구가 코코아 터치, 예를 들어CoreData에 사용될 수 있다.
2. 데이터베이스 만들기 또는 열기
SQLite3을 사용하기 전에 데이터베이스를 열어야 합니다.이 동작을 실행하는 명령 sqlite3open () 는 기존 데이터베이스를 열 것입니다. 지정한 위치에 데이터베이스가 존재하지 않으면 새로운 데이터베이스를 만들 것입니다.다음은 데이터베이스를 여는 코드입니다.
// 
-(void)openDB
{
    // sqlite 
    NSString *dbPath = [[NSBundle mainBundle] pathForResource:@"Plan" ofType:@"sqlite"];
    
    // SQLite3 C, NSString C 
    const char *charPath = [dbPath UTF8String];
    
    // , SQLITE_OK, 
    int result = sqlite3_open(charPath, &database);
    
    if(result == SQLITE_OK)
    {
        NSLog(@" ");
    }
    else
    {
        NSLog(@" ");
    }
}

 
   
result가 상수인 SQLITEOK, 데이터베이스가 성공적으로 열렸음을 나타냅니다.데이터베이스 파일의 경로는 NSString이 아닌 C 문자열로 전달되어야 합니다.SQLite3 데이터베이스는 Object-C가 아닌 이식 가능한 C(Object-C)로 작성되기 때문에 NSString이 무엇인지 알 수 없습니다.다행히 NSString 인스턴스에서 C 문자열을 생성할 수 있는 NSString 방법이 있습니다.
const char *charPath = [dbPath UTF8String];

3. 데이터베이스 닫기
SQLite3 데이터베이스에서 모든 작업을 수행할 때 sqlite3 호출데이터베이스를 닫으려면 close():
// 
-(void)closeDB
{
    sqlite3_close(database);
}

4. 데이터베이스 업데이트, 삽입 및 삭제(테이블 작성의 예)
데이터베이스는 모든 데이터를 테이블에 저장하고 SQL CREATE 문장을 통해 새 테이블을 만들고 sqliteexec는 다음과 같이 열려 있는 데이터베이스로 전달합니다.
-(void)createTable
{
    char *errorMessage;
    
    const char *createSQL = "create table if not exists People (pID integer primary key autoincrement , pName text)";
    
    int result = sqlite3_exec(database, createSQL, NULL, NULL, &errorMessage);
    if(result == SQLITE_OK)
    {
        NSLog(@" ");
    }
    else
    {
        NSLog(@" :%s", &errorMessage);
    }
}

이 작업을 수행하기 전에 result가 SQLITE 와 같은지 확인해야 합니다OK 를 클릭하여 명령이 성공적으로 실행되었는지 확인합니다.명령이 성공적으로 실행되지 않으면 errorMessage는 발생하는 문제에 대한 설명을 포함합니다.
함수 sqlite3exec는 SQLite3에 대해 데이터를 되돌려 주지 않는 명령을 실행하는 데 사용되며, 업데이트, 삽입, 삭제 작업을 수행하는 데 사용됩니다.
5. 데이터베이스 조회
데이터베이스에서 데이터를 검색하는 것은 좀 복잡합니다. 우선 SQL SELECT 명령을 입력해서 이 문법을 준비하고 sqlite3 을 호출해야 합니다.step () 를 사용하여 데이터베이스를 순차적으로 이동합니다.
-(void)query
{
    NSString *querySQL = @"select * from Artist ";
    
    sqlite3_stmt *statement;
    
    // 
    int result = sqlite3_prepare(database, [querySQL UTF8String], -1, &statement, nil);
    
    if (result == SQLITE_OK)
    {
        // step 
        while (sqlite3_step(statement) == SQLITE_ROW)                             
        {
            int rowNum = sqlite3_column_int(statement, 0);
            char *rowData = (char *)sqlite3_column_text(statement, 1);

            NSString *fieldValue = [[NSString alloc] initWithUTF8String:rowData];
            NSLog(@" %d :%@", rowNum, fieldValue);
        }
        sqlite3_finalize(statement);
    }
}

만약 Result가 SQLITE 와 같다면OK, 당신의 문장은 이미 준비가 완료되었으니, 단일 디버깅 결과 집합을 시작할 수 있습니다.위의 예는 int 및 NSString을 데이터베이스에서 검색한 예입니다.
위에서 말한 바와 같이 간단한 데이터베이스 열기, 닫기, 창설표, 수정, 삭제, 조회 등 조작은 모두 대응하는 방법을 호출하면 된다.사실 가장 중요한 것은 역시 SQL 문장을 정확하게 써야 한다는 것이다.

좋은 웹페이지 즐겨찾기