नहीं, यह स्ट्रिंग को "वापस" नहीं करता है, एसक्यूलाइट केवल डेटा को स्टोर करता है जैसा इसे प्रदान किया जाता है।
जैसा कि दस्तावेज़ीकरण बताता है :
यदि आपने टेक्स्ट वैल्यू की आपूर्ति/बाध्यकारी की है, तो यह टेक्स्ट वैल्यू स्टोर करेगा। CREATE TABLE स्टेटमेंट में दिए गए प्रकार में कोई रूपांतरण नहीं है, क्योंकि यह हो सकता है अन्य अधिक सख्त आरबीएमएस में दिखाई देते हैं, उदा। माई एसक्यूएल।
तो आपके मामले में, यदि आप डेटा को ftWideString
. के रूप में पुनः प्राप्त करते हैं , मुझे लगता है कि ऐसा इसलिए है क्योंकि आपने डेटा को टेक्स्ट के रूप में लिखा है। उदाहरण के लिए, आपके MySQL से SQLite3 सामग्री बनाने वाला टूल या प्रोग्राम इस कॉलम को टेक्स्ट के रूप में लिख रहा है।
संख्याओं के बारे में, SQLite3 में कोई "हस्ताक्षरित"/"हस्ताक्षरित" नहीं है, न ही सटीक जांच है। इसलिए यदि आप "अहस्ताक्षरित बड़े int" मानों को संग्रहीत करना चाहते हैं, तो बस INTEGER का उपयोग करें, जो कि Int64 हैं।
लेकिन, सभी मामलों में, भले ही SQLite3 API UNSIGNED 64 बिट पूर्णांकों का समर्थन करता हो
, यह sqlite3_uint64
प्रकार शायद ही Zeos/ZDBC API या डेल्फी द्वारा समर्थित हो (डेल्फी के पुराने संस्करण UInt64 का समर्थन नहीं करते हैं)। सुनिश्चित करने के लिए, आपको टेक्स्ट जैसे मानों को बेहतर ढंग से पुनर्प्राप्त करना चाहिए, फिर इसे UInt64
के रूप में परिवर्तित करना चाहिए मैन्युअल रूप से आपके डेल्फ़ी कोड में।
अपडेट करें:
क्या आप TDataSet
. का उपयोग कर रहे हैं? ज़ीओस द्वारा प्रदान किया गया वंशज? यह घटक DB.Pas
. से जुड़ा हुआ है , इसलिए एकल प्रति-स्तंभ प्रकार की अपेक्षा करता है। यह आपके कोड के भ्रम का स्रोत हो सकता है (जो आपने बिल्कुल नहीं दिखाया, इसलिए यह पता लगाना कठिन है कि क्या हो रहा है)।
आपको निचले स्तर के ZDBC इंटरफ़ेस का बेहतर उपयोग करना चाहिए, जो प्रत्येक पंक्ति के लिए कॉलम प्रकार को पुनः प्राप्त करने की अनुमति देता है, और आपको आवश्यकता के अनुसार वैल्यू गेट्टर विधि को कॉल करने की अनुमति देता है।