2013-02-14 11 views
7

बड़े पैमाने पर Ray Wenderlich's SQLite tutorial का पालन करते हुए, मैं एक काफी सरल ऐप लिख रहा हूं जो सर्वर से निकाली गई जानकारी प्रदर्शित करता है।यदि sqlite3_prepare_v2() एक देता है तो मैं त्रुटि कोड कैसे प्राप्त करूं?

{ 
    NSMutableArray *list = [[NSMutableArray alloc] init]; 
    NSString *query = @"SELECT _id, type FROM table ORDER BY type"; // As appropriate. 
    sqlite3_stmt *statement; 

    if (sqlite3_prepare_v2(_db, [query UTF8String], -1, &statement, nil) == SQLITE_OK) { 
     while (sqlite3_step(statement) == SQLITE_ROW) { 
      // Process the returned values... 
      int rowNumber = sqlite3_column_int(statement, 0); 

      // Initialize the object. 
      // Push the object onto the array. 
     } 
     sqlite3_finalize(statement); 
    } else { 
     // Log the error. 
    } 
    return list; 
} 

मेरा प्रश्न, है क्या हुआ अगर if बयान झूठे रिटर्न एक त्रुटि के लिए जाँच करने के लिए सबसे अच्छा तरीका है: मेरी SQLite प्रश्नों की बुनियादी संरचना (स्थानीय डेटाबेस, नहीं सर्वर से) इस प्रकार है? मेरे लिए सबसे आसान समाधान sqlite3_prepare_v2() के वापसी मूल्य को int के रूप में संग्रहीत करना प्रतीत होता है और SQLITE_OK के विरुद्ध चेक करें। sqlite_errmsg() पर कॉल करने के बारे में क्या?

मैंने sqlite_exec() में देखा था, लेकिन मुझे संकलन करने के लिए कोई भाग्य नहीं मिला है और मुझे सी में कॉलबैक की समझ में पर्याप्त आत्मविश्वास महसूस नहीं होता है ताकि उन्हें उपयोग करने वाले कोड को सही तरीके से बनाए रखा जा सके। हालांकि यह त्रुटि के लिए एक तर्क गुजरता है, जो मुझे पहले स्थान पर देख रहा है।

उत्तर

3

यदि आप एक त्रुटि संदेश प्राप्त करना चाहते हैं, तो आपको वास्तव में sqlite3_errmsg पर कॉल करना होगा।

sqlite3_exec आपको एक ही स्ट्रिंग देगा।

+1

तो ऐसा लगता है जैसे 'else' ब्लॉक में 'NSLog (@" डेटाबेस त्रुटि% d:% s ", sqlite3_errcode (_db), sqlite3_errmsg (_db)) हो सकता है;' – ele

+0

हां; यद्यपि त्रुटि कोड बहुत उपयोगी नहीं है यदि आपके पास संदेश भी है (कोड में जानकारी संदेश में जानकारी का सबसेट है)। –

+0

धन्यवाद। अभी तक इसका परीक्षण करने का मौका नहीं मिला था। – ele

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

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