2012-11-26 3 views
1

sqlite3 처리기에 대한 포인터를 NSData로 변환 할 수 있습니까?sqlite3 * to NSData

그러면 암호화하고 암호 해독 할 수 있습니다.

나는이 :

sqlite *sqliteHandle; 
NSData *dataDB = [NSData dataWithBytes:&sqliteHandle length:sizeof(sqliteHandle)]; 

그러나 이것은 단지 나에게 포인터가 아닌 실제 데이터를 제공합니다.

+3

'sqllite *'는 SQLLite 연결 개체에 대한 포인터이므로, 그 데이터를 직접 가져올 가능성은 없습니다. 먼저 쿼리를 실행 한 다음 결과에서 데이터를 추출해야합니다. – driis

+1

그리고 의도가 데이터베이스를 암호화하는 것이라면 잘못된 방법입니다. SQLCipher는 유일한 방법입니다. –

+0

음. SQLCipher는 이것을 어떻게 관리합니까? 어떤 방법이 있어야합니다. –

답변

0

sqllite *는 SQLLite 연결 개체에 대한 포인터이므로 직접 데이터를 가져올 가능성이 없습니다. 먼저 쿼리를 실행 한 다음 결과에서 데이터를 추출해야합니다.

열의 원시 데이터를 얻으려면 sqlite3_column_blob으로 전화하십시오.

문서를 확인하십시오. http://www.sqlite.org/capi3ref.html#sqlite3_column_blob

+0

이것은 내가 원하는 것이 아닙니다. 전체 처리기를 NSData 개체에 넣어야합니다. –

+0

@ user1423640 - "NSData 객체에 넣을 수있는 것이 아닙니다". SQLite는 파일 시스템에서 자체 파일을 관리하여 상당히 낮은 수준에서 레코드를 읽고 쓸 수 있습니다. 어떻게 든 I/O 호출을 차단하고 모방 파일 시스템에 매핑해야합니다. 어쩌면 재미있는 지적인 운동 일 수도 있지만, 비즈니스 관점에서는 어리 석다. –

+0

VFS를 사용하면 어떨까요? –