이 릴리스의 새 기능

Local Navigation

SQLite 개선 사항

SQLite 개선 사항

BlackBerry Java SDK 7.0에는 SQLite 버전 3.7.2가 사용됩니다. BlackBerry Java SDK 6.0에는 SQLite 3.6.21가 사용되었습니다. SQLite의 새 기능에 대한 자세한 내용은 SQLite 설명서(www.sqlite.org)를 참조하십시오.

스키마 및 트랜잭션의 내부 데이터 구조를 저장하기 위해 SQLite 데이터베이스에 사용할 수 있는 RAM의 크기가 16MB(6.0에서 5MB)로 증가했습니다. 쿼리는 1MB까지 가능합니다. BlackBerry Java SDK 6.0의 경우 최대 쿼리 길이는 4KB였습니다. 파일 처리 한계가 64로 증가하여 BlackBerry Java SDK 7.0에서 동시에 최대 56개의 데이터베이스를 열 수 있습니다.

또한 롤백 저널 대신 사전 기록 로그를 사용할 수 있습니다. 데이터베이스에 대한 쓰기가 읽기를 방해하지 않으므로 사전 기록 로그를 통해 동시 처리 기능이 증가됩니다. journal_mode pragma에서 WAL 옵션을 설정하여 사전 기록 로그를 사용할 수 있습니다. 공유 캐시 모드를 사용하여 한 데이터베이스를 여러 곳에서 연결할 때 메모리를 더 적게 사용할 수도 있습니다.

SQLite 서비스

SQLite는 이제 서비스로 실행되며 데이터베이스 작동 시 JavaScript 코드와 원시 코드 간의 데이터 전달을 위해 런타임 브리지가 사용됩니다. 런타임 브리지를 효율적으로 사용하는 데 도움이 되는 다양한 메소드가 추가되었습니다.

데이터 삽입 또는 업데이트를 위해 준비된 문을 만들 때 Statement.executeInsert()Statement.executeUpdate()를 사용하여 런타임 브리지를 통한 호출 수를 줄일 수 있습니다. 이러한 메소드는 원시 코드로 SQL 매개 변수 연결, 문 실행, 문 재설정 및 연결 삭제와 같은 작업을 수행합니다. 또한 executeInsert()는 마지막으로 삽입한 행 ID를 반환합니다.

결과 세트를 반환하지 않는 쿼리를 실행하고 매개 변수를 연결하지 않는 경우, Database.executeStatement()를 사용하여 런타임 브리지를 통한 호출을 줄일 수 있습니다. 이런 메소드는 원시 코드에서 문 준비, 문 실행, 문 마무리와 같은 작업을 수행합니다.

Statement.getCursor()를 사용하여 결과 세트를 반환하는 쿼리를 실행하는 경우, Statement.setCursorBufferSize()를 사용하여 지정된 행 수를 미리 가져올 수 있습니다. 이 메소드를 사용하면 런타임 브리지의 사용 횟수를 줄일 수 있습니다. 커서가 버퍼링된 세트를 통과하는 경우 일련의 새 행들이 미리 가져와집니다. 새 메소드 Statement.getCursorBufferSize()를 사용하여 커서가 버퍼링하는 다수의 행을 가져올 수 있습니다.

다른 쿼리에 키로서 사용할 정수 값을 가져오는 경우 Statement.getIntegers()Statement.getLongs()를 사용할 수 있습니다. 이러한 메소드를 사용하면 정수 열을 간단하고 최적화된 방식으로 가져올 수 있습니다.

BLOB 처리를 위한 개선된 기능

BLOB 처리를 위한 새 메소드를 사용하면 프로그램 메모리에 전체 BLOB를 보관하지 않아도 되므로 사용 가능 동적 메모리의 크기에 의해 데이터베이스에서 읽거나 쓸 수 있는 BLOB의 크기가 제한되지 않습니다. Database.createBlobOutputStream()은 BLOB에 데이터를 쓰는 데 사용되는 OutputStream 객체를 만들고 Database.createBlobInputStream()은 BLOB의 데이터를 읽는 데 사용되는 InputStream 객체를 만듭니다.

BLOB용 공간 예약

Statement.bindZeroBlob() 메소드를 사용하여 Statement에 있는 매개 변수에 일련의 null 바이트를 연결할 수 있습니다. Database.createBlobOutputStream() 메소드를 사용하여 데이터를 BLOB에 쓴 후 Statement.execute()Statement를 실행하는 경우, bindZeroBlob 메소드를 사용하여 BLOB 출력에 사용할 공간을 예약할 수 있습니다.

연결 메모리 사용량 통계

새 메소드인 Database.getCacheUsed(), Database.getSchemaUsed()Database.getStatementUsed()를 사용하여 각 데이터베이스 연결의 메모리 사용량을 추적할 수 있습니다.

새 메소드인 Row.getDatabaseColumnTypes()를 사용하여 행으로 지정된 SQLite 열 유형을 검색할 수 있습니다.

Pragma 지원

이제 SQLite PRAGMA 문의 하위 집합을 사용할 수 있습니다. net.rim.device.api.database.Pragma 클래스에는 지원되는 각 pragma에 대한 상수가 포함되어 있습니다. 다음은 지원되는 pragma입니다.

  • collation_list

  • compile_options

  • database_list

  • foreign_keys

  • freelist_count

  • journal_mode

  • journal_size_limit

  • page_count

  • synchronous

  • user_version

데이터베이스 첨부 및 분리

기존 데이터베이스 연결에 데이터베이스를 첨부하거나 분리할 수 있으며 Database.attach()Database.detach()와 같은 두 개의 새 메소드가 추가되었습니다. 이러한 메소드를 사용하여 최대 10개의 데이터베이스를 연결에 첨부할 수 있습니다. SQL 문에 DETACH 명령을 사용할 수도 있지만 ATTACH 명령은 사용할 수 없습니다.

언어 데이터 정렬

언어 데이터 정렬이 지원됩니다. 예를 들어, 열에 프랑스어 데이터 정렬이 가능한 테이블을 만들 수 있습니다. 다음 데이터 정렬 순서가 지원됩니다.

  • 표준
  • 남아프리카 공용어
  • 아랍어
  • 카탈로니아어
  • 체코어
  • 프랑스어
  • 히브리어
  • 중국어(홍콩)
  • 헝가리어
  • 일본어
  • 한국어
  • Pinyin
  • 폴란드어
  • 루마니아어
  • 스페인어
  • 태국어
  • 터키어
  • 중국어(대만)

버퍼링된 커서의 동작 변경

BufferedCursor.isEmpty() 메소드는 모든 환경에서 커서를 통해 이동하지 않으므로 커서 위치가 사용 가능한 마지막 행보다 하나 더 많은 경우 더 이상 false를 반환하지 않습니다.

BufferedCursor.prev() 메소드는 여러 번 호출되는 경우 커서의 위치를 최초 위치(-1)로 다시 설정합니다.

의견 제공

이 제품에 대한 의견을 제공하시려면 www.blackberry.com/docsfeedback을 방문하십시오.

다음 주제: 법적 고지
이전 주제: NFC 보안

이 정보가 도움이 되었습니까? 의견을 보내 주십시오.