Db से c # में डेटा कैसे प्राप्त करें? [डुप्लिकेट]

Jan 17 2021

मुझे sqlite डेटाबेस से डेटा प्राप्त करने की आवश्यकता है, लेकिन मुझे यह त्रुटि मिली:

System.InvalidCastException: 'निर्दिष्ट कास्ट मान्य नहीं है।'

क्या मैं खराब तरीके से डेटा का प्रकार बदल रहा हूं?

conn.Open();
string stm = new CustomQueries().GetUsersByName(this.searchedName, this.searchedSurname);

SQLiteCommand cmd = new SQLiteCommand(stm, conn);
SQLiteDataReader rdr = cmd.ExecuteReader();

while (rdr.Read())
{
    this.personResults.Add(new Person(
                    (int)rdr["Id"],
                    (int)rdr["School_id"],
                    (int)rdr["Role_id"],
                    (string)rdr["Name"],
                    (string)rdr["Surname"],
                    (int)rdr["Study_year"],
                    (string)rdr["Identification_number"],
                    (string)rdr["Address"],
                    (string)rdr["Phone"],
                    (string)rdr["Email"],
                    (int)rdr["Age"],
                    (string)rdr["Birth_date"],
                    (string)rdr["Year_letter"]
                    ));
}

conn.Close();

मेरी डेटाबेस संरचना कोड में फ़ील्ड के समान है। कॉलम टाइप Textया intडेटाबेस में हैं - फिर से टाइप के समान ()

संपादित करें> क्वेरी:

 public string GetUsersByName(string name, string surname)
        {
            return "select * from user where name LIKE '%" + name + "%' and surname LIKE '%" + surname + "%'";
        }

DB उपयोगकर्ता तालिका संरचना

जवाब

MD.RAKIBHASAN Jan 17 2021 at 17:58

आप कास्टिंग ऑपरेटर का उपयोग करके किसी मान या ऑब्जेक्ट को उसके स्ट्रिंग प्रतिनिधित्व में बदलने का प्रयास कर रहे हैं। जब आप प्रोग्राम को निष्पादित करते हैं, तो आपको "System.InvalidCastException: 'System System.nt32' टाइप करने के लिए 'System.String' टाइप की कास्ट करने में असमर्थ होगा।"

ToString () विधि ऑब्जेक्ट क्लास द्वारा परिभाषित की गई है और इसलिए या तो सभी प्रबंधित प्रकारों द्वारा विरासत में मिली या अधिभूत है। तो, यहाँ हम इसकी ToString विधि को कहते हैं क्योंकि यह किसी भी प्रकार के इंस्टेंस को सफलतापूर्वक इसके स्ट्रिंग प्रतिनिधित्व को कवर करती है।

(int) rdr ["Id"] यहाँ समस्या है। अपनी समस्या को ठीक करने के लिए आप Convert.ToInt32 (rdr ["Id"]) का उपयोग कर सकते हैं।