2013-05-09 4 views
2

다음 쿼리를 사용하여 새롭게 데이터베이스 테이블 중 하나에 열을 추가했습니다.액세스 부울 값 양식 Sqlite 데이터베이스

alter table 'user' add column 'IsMarried' BOOL default 'false'; 

데이터베이스 업데이트가 완료되면 'jhon'사용자가 데이터베이스에서 IsMarried 상태가 'true'로됩니다.

그리고 Objective C를 사용하여 SQL 쿼리를 작성하여 jhon의 결혼 상태를 검색합니다.

BOOL married = [results boolForColumn:@"IsMarried"]; 

내 문제는 부울 가변 '결혼'은 항상 false를 반환합니다.

는 그럼 확인하기 위해 코드에 라인을 follwing을 추가 할 jhon에 대한 정확성

NSString *strMarried = [results stringForColumn:@"IsPwdProtected"]; 

다음 strMarried 복귀 '사실'여부. 어떤 사람이 부울 값을 다시 얻는 법을 말해 줄 수 있습니까? boolForColumn 메서드

+0

를 사용할 수 있습니다. 숫자 사용 (0은 거짓, 1은 참) – CodaFi

+0

표준 sqlite3 프레임 워크에'stringForColumn'과 같은 메소드가 없습니다. – Mundi

답변

1

BOOL은 SQLite에서 지원되지 않으므로 각각 false와 true를 나타 내기 위해 정수 (0과 1)를 사용해야합니다. 그 여기에 대한 자세한 정보 : Is there a boolean literal in SQLite?

나는 맥의 앞에 현재 아니에요 그래서이를 테스트 할 수 없습니다하지만 난 다음 당신은 당신이 원하는 원하는 얻을 것이다 상상 :

alter table 'user' add column 'IsMarried' INTEGER default 0; 

당신이 만약 결혼 한 상태가 1이되도록 사용자 'jhon'을 업데이트하면 boolForColumn으로 전화하면 true를 반환합니다.

0

'false'와 'true'는 문자열입니다.

0

SQLite에는 별도의 부울 스토리지 클래스가 없습니다. 대신 부울 값은 정수 0 (거짓)과 1 (참)로 저장됩니다.

그래서 당신은 당신은 부울 값을 숫자 및 테스트에 SQL 텍스트 모양을 변환하고 아래 코드

NSString *boolString = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)]; 

BOOL married = [boolString boolValue];