2012-01-17 3 views
0

을 감안할 때 : 테이블 T sqlite : 선택한 열의 열 ID를 얻는 방법?

  • T 10 개 컬럼이 들어있는 테이블

    • SQLite는 데이터베이스 - C0, C1 ... C9합니다. sqlite3_stmt 포인터 select C3,C2 from T

    OK 대응

  • 는, 그래서이 같은 방법의 sqlite3_column_XXX 가족 (http://www.sqlite.org/capi3ref.html#sqlite3_column_blob)를 사용하여 선택된 열 값을 가져올 수

    sqlite3_stmt *s; 
    sqlite3_prepare_v2(db, query, sizeof(query), &s, NULL); 
    while ((result = sqlite3_step(s)) == SQLITE_ROW) 
    { 
        const char *v3 = reinterpret_cast<const char *>(sqlite3_column_text(s, 0); 
        const char *v2 = reinterpret_cast<const char *>(sqlite3_column_text(s, 1); 
    } 
    

    무엇 I 필요한 것은 인 선택한 열의 실제 인덱스, 즉 v3의 경우 3, v2의 경우 2입니다.

    동기 부여 : 반환 된 문자열 값을 실제 열 유형으로 구문 분석 할 수 있기를 바랍니다. 사실, 내 스키마는 c3datetime이고, sqlite는 TEXT으로 취급됩니다. 따라서 sqlite3_column_type(s, 0)SQLITE3_TEXT을 반환하지만 테이블 메타 데이터 (pragma table_info(T)에서 사용 가능)는 해당 열의 의도 유형 인 datetime 문자열을 유지합니다. 그것을 알면, 나는 반환 된 문자열을 신기원 이후의 각각의 유닉스 시간으로 파싱 할 수있다.

    하지만 어떻게 내가 테이블 열 인덱스에 대한 질의 열 인덱스에 매핑 할 수 있습니다 :

    • 질의 열 0-> 테이블 열 3
    • 질의 열 1-> 테이블 열이

    을 감사.

  • +0

    더 높은 수준의 우려 사항에 해당 정보를 삽입하는 것이 고려 되었습니까? * 테이블 바에서 쿼리하는 foo가 * 알고있는 코드는 일부 열의 날짜를 원한다고 선언 할 수 있습니다. 그렇지 않으면 실제로 설계되지 않았거나 잘 지원 될 것으로 기대되는 시스템에서의 내성에 의존합니다. –

    답변

    1

    stmt 결과에서 선언 된 열 데이터 형식을 얻으려면 sqlite C 함수 sqlite3_column_decltype을 사용할 수 있습니까? 질문에 대한 답변 (원문 색인 생성)은 없지만 필요한 것을 얻기위한 다른 방법이 될 수 있습니까?

    +0

    네, 이것으로 충분합니다. – mark

    관련 문제