Android SQLite: nullColumnHack पैरामीटर डालने / बदलने के तरीकों में


96

एंड्रॉइड एसडीके में SQLite के साथ डेटा में हेरफेर करने के लिए कुछ सुविधा विधियां हैं। हालाँकि डालने और बदलने के तरीके दोनों ही कुछ nullColumnHackपैरामीटर का उपयोग करते हैं, जिनका उपयोग मुझे समझ में नहीं आता है।

प्रलेखन इसे निम्नलिखित के साथ समझाता है, लेकिन क्या होगा यदि एक तालिका में कई कॉलम हैं जो अनुमति देते हैं NULL? मैं वास्तव में यह नहीं मिलता है: /

SQL पूरी तरह से खाली पंक्ति सम्मिलित करने की अनुमति नहीं देता है, इसलिए यदि initialValues ​​रिक्त है, तो यह कॉलम [ / प्रतिस्थापन के लिए पंक्ति ] स्पष्ट रूप से एक NULLमान निर्दिष्ट किया जाएगा ।

जवाबों:


195

मान लीजिए कि आपके पास एक तालिका है, fooजहां सभी कॉलम NULLमानों को अनुमति देते हैं या डिफॉल्ट होते हैं।

कुछ SQL कार्यान्वयन में, यह मान्य SQL होगा:

INSERT INTO foo;

यह SQLite में मान्य नहीं है। आपको कम से कम एक कॉलम निर्दिष्ट करना होगा:

INSERT INTO foo (somecol) VALUES (NULL);

इसलिए, जिस स्थिति में आप एक खाली पास ContentValuesकरते हैं insert(), एंड्रॉइड और SQLite को कुछ कॉलम की आवश्यकता होती है जो कि असाइन NULLकरने के लिए सुरक्षित है। यदि आपके पास चुनने के लिए कई ऐसे स्तंभ हैं, तो अपनी पसंद के चयन तंत्र के माध्यम से एक चुनें: पासा का रोल, मैजिक 8-बॉल (टीएम), सिक्का फ्लिप, क्यूबिकल मेट फ्लिप, आदि।

व्यक्तिगत रूप से, मैंने अभी खाली ContentValuesकरने के लिए इसे अवैध बना दिया है insert(), लेकिन उन्होंने मुझसे नहीं पूछा ... :-)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.