Bagaimana cara mendapatkan data dari db di c #? [duplikat]

Jan 17 2021

Saya perlu mendapatkan data dari database sqlite, tetapi saya mendapatkan kesalahan ini:

System.InvalidCastException: 'Pemeran yang ditentukan tidak valid.'

Apakah saya mengubah jenis data dengan cara yang buruk?

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();

Struktur database saya sama dengan kolom dalam kode. Kolom bertipe Textatau intdalam database - lagi-lagi sama seperti type in ()

edit> Kueri:

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

Struktur tabel Pengguna DB

Jawaban

MD.RAKIBHASAN Jan 17 2021 at 17:58

Anda mencoba mengonversi nilai atau objek menjadi representasi stringnya dengan menggunakan operator pengecoran. Ketika Anda menjalankan program, Anda akan mendapatkan "System.InvalidCastException: Tidak dapat mentransmisikan objek jenis 'System.Int32' untuk mengetik 'System.String'."

Metode ToString () ditentukan oleh kelas Objek dan oleh karena itu diwariskan atau diganti oleh semua jenis yang dikelola. Jadi, di sini kita menyebutnya metode ToString karena berhasil menyembunyikan instance jenis apa pun ke representasi stringnya.

(int) rdr ["Id"] Inilah masalahnya. Anda dapat menggunakan Convert.ToInt32 (rdr ["Id"]) untuk memperbaiki masalah Anda.