Как получить данные из db в c #? [дубликат]
Мне нужно получить данные из базы данных 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 + "%'";
}
Структура таблицы пользователей БД
Ответы
вы пытаетесь преобразовать значение или объект в его строковое представление с помощью оператора приведения. При выполнении программы вы получите сообщение «System.InvalidCastException: невозможно преобразовать объект типа 'System.Int32' в тип 'System.String'».
Метод ToString () определяется классом Object и поэтому либо наследуется, либо переопределяется всеми управляемыми типами. Итак, здесь мы вызываем его метод ToString, потому что он успешно преобразует экземпляр любого типа в его строковое представление.
(int) rdr ["Id"] Вот в чем проблема. вы можете использовать Convert.ToInt32 (rdr ["Id"]), чтобы решить вашу проблему.