¿Cómo obtener datos de db en c #? [duplicar]
Necesito obtener datos de la base de datos sqlite, pero me sale este error:
System.InvalidCastException: 'La conversión especificada no es válida'.
¿Estoy cambiando el tipo de datos de forma incorrecta?
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();
La estructura de mi base de datos es la misma que la de los campos del código. Las columnas son de tipo Text
o están int
en la base de datos, nuevamente lo mismo que el tipo ()
editar> Consulta:
public string GetUsersByName(string name, string surname)
{
return "select * from user where name LIKE '%" + name + "%' and surname LIKE '%" + surname + "%'";
}
Estructura de la tabla de usuario de la base de datos
Respuestas
está intentando convertir un valor o un objeto en su representación de cadena mediante el uso de un operador de conversión. Cuando ejecute el programa obtendrá "System.InvalidCastException: No se puede convertir el objeto de tipo 'System.Int32' para escribir 'System.String'".
El método ToString () lo define la clase Object y, por lo tanto, todos los tipos administrados lo heredan o lo reemplazan. Entonces, aquí llamamos a su método ToString porque encubrió exitosamente una instancia de cualquier tipo a su representación de cadena.
(int) rdr ["Id"] Aquí está el problema. puede utilizar Convert.ToInt32 (rdr ["Id"]) para solucionar su problema.