2013-01-22 22 views

Trả lời

5

Từ các tài liệu FMDB chính thức:

Mở

Trước khi bạn có thể tương tác với cơ sở dữ liệu, nó phải được mở ra. Mở không thành công nếu không có đủ tài nguyên hoặc quyền để mở và/hoặc tạo cơ sở dữ liệu.

if (![db open]) { 
[db release]; 
return; 
} 

Đóng

Khi bạn đã hoàn thành việc thực hiện truy vấn và cập nhật trên cơ sở dữ liệu, bạn nên ngắt kết nối FMDatabase để SQLite sẽ từ bỏ bất kỳ tài nguyên nó đã được mua lại trong suốt quá trình hoạt động của mình .

[db close]; 

Vì vậy, mỗi lần truy vấn của bạn cơ sở dữ liệu, bạn nên có một cặp openclose cuộc gọi trên cơ sở dữ liệu của bạn.

Tóm lại, mở kết nối DB khi bạn yêu cầu mọi thứ từ cơ sở dữ liệu và đóng nó khi bạn sử dụng xong cơ sở dữ liệu.

Liên kết đến tài liệu: https://github.com/ccgus/fmdb

+0

vì vậy những hạn chế nếu tôi không đóng cơ sở dữ liệu với toàn bộ vòng đời của ứng dụng iOS là gì? – Nikh1414

+0

'SQLite sẽ từ bỏ mọi tài nguyên mà nó đã thu được trong quá trình hoạt động của nó.', từ tài liệu, nếu bạn không đóng kết nối, các tài nguyên có được bởi SQLite sẽ không được giải phóng và ứng dụng của bạn sẽ có vấn đề về bộ nhớ. –

+0

Nếu bạn đang thực hiện nhiều truy vấn, bạn nên tắt cơ sở dữ liệu. Có một hit trong hiệu suất khi bạn mở một cơ sở dữ liệu, và trung thực, các tài nguyên sqlite chiếm không phải là rất nhiều. Chỉ cần giữ nó mở. – ccgus

7

Không có lý do gì để đóng trừ khi bạn thay đổi lược đồ. Vì vậy, hãy giữ nó mở.

+0

nó tốt nếu khi ứng dụng là trong foreground hơn thời gian db mở và khi ứng dụng đi trong chế độ nền db.close? – Hitarth

+1

Và nếu db mở và nó sẽ không sử dụng thời gian dài hơn nó sẽ tự động đóng? – Hitarth

Các vấn đề liên quan