Bagaimana cara mendapatkan data dari db di c #? [duplikat]
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 Text
atau int
dalam 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
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.