mysql에서 아무런 오류없이 명령을 실행했습니다. 내 다른 명령을 잘 실행하지만이 코드는 작동하지 않습니다. 어떤 사람이이 코드로 어떤 일이 발생하는지 압니다.C에서 mysqldatareader를 실행할 때 "지정된 키가 사전에 없습니다."
private static User GetUser(MySqlCommand cmd)
{
User usr = new User();
MySqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
while (rdr.Read())
{
usr.Id = Convert.ToInt32(rdr["Id"]);
usr.Level = (Level)Enum.Parse(typeof(Level), rdr["level"].ToString());
usr.Email = rdr["email"].ToString();
usr.CreatedDate = Convert.ToDateTime(rdr["createdDate"].ToString());
usr.LastLoginDate = Convert.ToDateTime(rdr["lastLoginDate"].ToString());
}
}
return usr;
}
public static User GetUserFromID(int userID)
{
string qry = "SELECT * FROM user WHERE ID = ?userID";
User user = new User();
MySqlConnection cnn = new MySqlConnection(Globals.CONNSTRING);
cnn.Open();
using (cnn)
{
MySqlCommand cmd = new MySqlCommand(qry, cnn);
cmd.Parameters.AddWithValue("userID", userID);
user = GetUser(cmd);
}
cnn.Close();
return user;
}
내가 여기에 붙여 넣기 코드는
는 "주어진 키가 사전에 존재하지 않았다."고 나에게 오류를 준
MySqlDataReader rdr = cmd.ExecuteReader();
사람이 잘못이 코드 일어날 뭔지 알아 : 라인 158의 라인에
? 사람들이 SO에서 제안하는 것처럼 나는 CharSet=utf8;
을 connectionstring에 추가했습니다.
내가 사용하는 데이터베이스는 mariaDB과 커넥터는 MySQL의 최신 커넥터입니다. 이것이 어떤 문제가 있다면 누군가 알고 있습니다.
다른 기능을 실행하는 동안 문제가 없습니다. 이 문제는 mysqldatareader 실행을 사용하는 단일 함수에서 발생한다.
@DGibbs 감사하지만 혼란 스러워요. 내 다른 쿼리는 C#으로 작성된 잘 작동합니다. 저는 사람들이 답을 들으면서 utf-8을 설정했습니다. 이제 매개 변수가 올바르게 설정되었는지 확인합니다. 나는 뭔가를 놓친다. 그것을 확인할 수 있습니까 :) – user2126670
'Globals.connString'이란 무엇입니까? 'cnn'의 값은 무엇입니까? 연결 문자열이 맞습니까? –
@ SonerGönül 예, 그것은 내가 작성한 다른 함수에 대한 작업이며 mysqlhelper에서 호출합니다. mysqlexecutereader로 작성된이 단일 함수는 문제를 일으킨다. 글쎄, 나는 여기에 올린 사람 1 기능을 작성했습니다. – user2126670