我拆过的坑cycx

查询一下!

MySql.Data.MySqlClient.MySqlException'发生在MySql.Data.dll中

本文介绍了MySql.Data.MySqlClient.MySqlException'发生在MySql.Data.dll中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我正在尝试从c#应用程序查询MySQL数据库.下面是代码,在这里我正在使用parameterized query public static void ValidateName(MySqlConnection conn,List EmpList, string Group) { string selectQuery = "Select Name from Employee where Group = @Group AND @Name in (FirstName, LastName);"; using (MySqlCommand cmd = new MySqlCommand(selectQuery, conn)) { for (int i = 0; i < EmpList.Count; i++) { cmd.Parameters.Add("@Group", MySqlDbType.VarChar).Value = Group; cmd.Parameters.Add("@Name", MySqlDbType.VarChar).Value = EmpList[i].Name; var reader = cmd.ExecuteReader(); List lineList = new List(); while (reader.Read()) { lineList.Add(reader.GetString(0)); } if (lineList.Count <=0) { WriteValidationFailure(EmpList[i], "Failed"); } } } 但是上面的代码在下面一行说 cmd.Parameters.Add("@Group", MySqlDbType.VarChar).Value = Group; 类型为'MySql.Data.MySqlClient.MySqlException'的未处理异常 MySql.Data.dll'@Group中已经发生了 推荐答案 之所以发生这种情况,是因为您在每次迭代中都添加了相同的参数集.您可以在每次迭代中清除然后在启动循环之前添加它们,并在每次迭代期间更改现有参数的值.我认为第二种选择会很棒.我还要在此处指定关于阅读器的另一件事,您必须将阅读器用作using变量,以便每次将其放置在using块的末尾时,您的代码就可以正常工作.这意味着您可以尝试这样的事情: using (MySqlCommand cmd = new MySqlCommand(selectQuery, conn)) { cmd.Parameters.Add(new MySqlParameter("@Group", MySqlDbType.VarChar)); cmd.Parameters.Add(new MySqlParameter("@Name", MySqlDbType.VarChar)); for (int i = 0; i < EmpList.Count; i++) { cmd.Parameters["Group"].Value = group; cmd.Parameters["Name"].Value = EmpList[i].Name; // rest of code here using (MySqlDataReader reader = cmd.ExecuteReader()) { // Process reader operations } } }

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

Copyright Your WebSite.Some Rights Reserved.