2012-09-14 5 views
7

मैं अपने पढ़ने को डेटाबेस में लिखने से अवरुद्ध कर रहा हूं जो वाल मोड में है - मैं क्यों फंस गया हूं।SQLite डीबी (डब्ल्यूएएल के साथ) "चयन" statmement तैयार करते समय बंद कर दिया - क्यों?

मेरे सेटअप:

  • SQLite3 डेटाबेस, journal_mode = वाल, तुल्यकालिक = सामान्य
  • Mulitple सी ++ प्रक्रियाओं (3 सटीक होना करने के लिए) डेटाबेस का उपयोग - इन प्रक्रिया के भीतर कोई भी तरीका खुला और अपने स्वयं के गैर बंद sqlite3_open_v2 के साथ साझा कनेक्शन।
  • तरीके है कि डेटा डालने कर रहे हैं SQLITE_OPEN_READWRITE मोड में डाटाबेस खोलने
  • तरीके है कि डेटाबेस से पढ़ने (यानी केवल बयानों का चयन करते हैं) SQLITE_OPEN_READONLY मोड

वाल मोड में में डाटाबेस खोलने मेरा मानना ​​है कि यह होना चाहिए समवर्ती पाठकों के पास संभव है जबकि एक लेखन होता है।

फिर भी मैं देख रहा हूँ "डेटाबेस अवरोधित है" जब मैं एक का चयन करें बयान sqlite3_prepare_v2

मैं गलत क्या कर रही हो सकता है जो पाठक को खड़ी कर रहा है अवरुद्ध करने के लिए का उपयोग कर तैयारी कर रहा हूँ? क्या मैं गलत समझ रहा हूं कि वास्तव में "पढ़ना" क्या है?

कोई युक्ति की सराहना की,

धन्यवाद :)

उत्तर

0

जांच क्योंकि इस एक मामले का कारण बनता है कि डेटाबेस त्रुटि बंद कर दिया जाता है कि क्या आप हर sqlite3_step के बाद sqlite3_reset है। Sqlite3_prepare के साथ एक कथन तैयार करने और sqlite3_step के साथ निष्पादित करने के बाद , आपको इसे हमेशा sqlite3_reset से रीसेट करने की आवश्यकता है।

sqlite3_reset (एस) इंटरफ़ेस तैयार कथन को रीसेट करता है एस अपने प्रोग्राम की शुरुआत में।

आशा है कि यह आपकी समस्या हल करे ... !!!

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