2012-11-06 6 views
6

मुझे लगता है कि यह एक साधारण सवाल है लेकिन मुझे एफएमडीबी गिट पेज में जवाब नहीं मिला। आप कमांड का उपयोग करते हैं:SQLite एफएमडीबी बनाने की मेज - शुरुआती आईओएस

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

FMDB या SQLite सत्यापन के कुछ प्रकार पड़ता है यदि तालिका पहले से मौजूद है को देखने के लिए?

क्या मैं एक से अधिक टेबल बनाये बिना इस विधि को अपने क्लास प्रारंभकर्ता में कॉल कर सकता हूं?

क्षमा करें अगर बेवकूफ सवाल है।

उत्तर

0

जब भी आप CREATE TABLE आदेश एफएमडीबी को देते हैं, तो यह आंतरिक रूप से इसे संबंधित SQLite क्वेरी में परिवर्तित करता है (जिसके लिए आपको चिंता करने की आवश्यकता नहीं है)।

SQLite की वेबसाइट पर दिए गए आधिकारिक दस्तावेज के अनुसार, यह कहा गया है:

"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."

इसलिए, यदि आप एक ही नाम के साथ एक और तालिका बनाने के लिए प्रयास करते हैं, SQLite कह एक त्रुटि फेंक देगा:

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); 

आपको निम्न त्रुटि मिल जाएगी।
त्रुटि: तालिका test_table पहले से मौजूद है

तो, मेज के अस्तित्व के लिए SQLite चेक, यह एक और तालिका में एक ही नाम के साथ अनुमति नहीं दी जाएगी।

फिर से, आप अधिक जानकारी प्राप्त करने के लिए प्रलेखन का संदर्भ ले सकते हैं।

स्रोतhttp://www.sqlite.org/lang_createtable.html

+1

विस्तृत उत्तर के लिए धन्यवाद। – pedros

+0

मदद की खुशी है। –

14

एक अन्य समाधान आपकी क्वेरी को परिवर्तित करने के लिए है:

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

या, आप के साथ होने की जाँच कर सकते हैं:

select sql from SQLITE_MASTER where name = 'test_table' 

और अगर आप मिल देखना कोई परिणाम वापस।

संबंधित मुद्दे