2012-11-06 28 views
6

Tôi nghĩ đây là một câu hỏi đơn giản nhưng tôi không tìm thấy câu trả lời trong trang git FMDB. Khi bạn sử dụng lệnh:Tạo bảng FMDB SQLite - người mới bắt đầu iOS

[database executeUpdate:@"create table T_table(name text primary key, age int)"]; 

không FMDB hoặc SQLite làm cho một số loại xác minh để xem nếu bảng đã tồn tại?

Tôi có thể gọi phương thức này trong trình khởi tạo lớp mà không cần tạo nhiều hơn một bảng không?

Xin lỗi nếu câu hỏi ngu ngốc.

Trả lời

0

Bất cứ khi nào bạn cung cấp lệnh CREATE TABLE cho FMDB, nó chuyển nội bộ thành truy vấn SQLite tương ứng (mà bạn không phải lo lắng).

Theo tài liệu chính thức đưa ra trên trang web SQLite, nó khẳng định:

"It is usually an error to attempt to create a new table in a database that already contains a table, index or view of the same name."

Vì vậy, nếu bạn cố gắng để tạo ra một bảng có cùng tên, SQLite sẽ ném ra một lỗi nói:

create table test_table (test_no NUMBER, test_name TEXT); //Table created 

/* Now, try creating the table again */ 
create table test_table (test_no NUMBER, test_name TEXT); 

Bạn sẽ nhận được lỗi sau.
Lỗi: bảng test_table đã tồn tại

Vì vậy, kiểm tra SQLite cho sự tồn tại của bảng, nó sẽ không cho phép bảng khác có cùng tên.

Một lần nữa, bạn có thể tham khảo tài liệu để biết thêm chi tiết.

Nguồnhttp://www.sqlite.org/lang_createtable.html

+1

Cảm ơn bạn đã trả lời chi tiết. – pedros

+0

Rất vui khi được giúp đỡ. –

14

Một giải pháp khác là thay đổi truy vấn của bạn để:

create table if not exists test_table (test_no NUMBER, test_name TEXT); 

hay, bạn có thể kiểm tra sự tồn tại với:

select sql from SQLITE_MASTER where name = 'test_table' 

Và xem nếu bạn nhận được bất kỳ kết quả nào trở lại.

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