이것은 쉽게 이해할 수있는 질문입니다. 그러나 놀랍게도 여기에 답변을 찾지 못했습니다. 그래서 여기에 게시하고 있습니다. 나는 그것에서 부울 열을 포함하는 SQLite는 기반 데이터베이스를 상속 한Sqlite API 부울 액세스
는 다음과 같이 선언 :
이 표는 sqlite3를의 C API를 통해 액세스 할 수 있도록 노력하고있다CREATE TABLE example (
ex_col BOOLEAN NOT NULL DEFAULT 0,
);
는 지금 sqlite가 주어진 sqlite_column_*
함수를 호출 실제로 부울 유형을 지원하지 않습니다. 여기서 예상되는 동작은 무엇입니까?
이 나타납니다 sqlite_column_int()
항상 ... 0 또는 거짓, 나는 sqlite가 모든 열이 정말 텍스트 열 때문에이 가정
을 반환하고이를 유지하는 적절한 방법은 무엇입니까 - 다음 텍스트로 가져 오는 문자열은 true와 비교됩니까? 데이터베이스와 다른 모든 코드를 수정하고 싶지는 않습니다.
이전에 C 코드에서 부울 열을 가져올 필요가 없었으므로 완료되지 않았습니다. 그들은 SQL stmts (ins, upd 등)에 대한 #define과 뷰 및 트리거의 전체 묶음이 있습니다 ... 기본적으로 값은 직접 읽거나 삽입하지 않습니다. : -/ – Petriborg
하지만 분명히 어딘가에 값이 사용됩니까? 트리거가 열 값을 사용합니까? '# defined' 문은 어떨까요? 사용 된 적이 없다면 왜 그곳에 있습니까? ;-) –
사용 예, 이렇게'#define SQL "UPDATE SET SET ex_col = 'true';"'그러면 stmt가 정상적으로 호출됩니다. SQL 코드는 똑같습니다. 그래서 모든 것을 문자열 (yum)로 처리하거나 열 유형을'Int'로 변경해야합니다. – Petriborg