¿Cómo obtener datos de db en c #? [duplicar]

Jan 17 2021

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 Texto están inten 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

MD.RAKIBHASAN Jan 17 2021 at 17:58

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.