C #에서 db에서 데이터를 얻는 방법은 무엇입니까? [복제]
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 + "%'";
}
DB 사용자 테이블 구조
답변
MD.RAKIBHASAN
캐스팅 연산자를 사용하여 값 또는 개체를 문자열 표현으로 변환하려고합니다. 프로그램을 실행하면 "System.InvalidCastException : 'System.Int32'유형의 개체를 'System.String'유형으로 캐스팅 할 수 없습니다."라는 메시지가 표시됩니다.
ToString () 메서드는 Object 클래스에 의해 정의되므로 모든 관리 형식에 의해 상속되거나 재정의됩니다. 따라서 여기에서는 모든 유형의 인스턴스를 문자열 표현으로 성공적으로 변환했기 때문에 ToString 메서드를 호출합니다.
(int) rdr [ "Id"] 여기에 문제가 있습니다. Convert.ToInt32 (rdr [ "Id"])를 사용하여 문제를 해결할 수 있습니다.