在c#中使用Prepare语句的好处

时间:2017-03-14 03:59:34

标签: c# mysql

我使用参数化选择查询来查询mysql数据库。以下是我正在使用的c#代码

 public static void ValidateName(MySqlConnection conn,List<Employee> EmpList, string Grp)
{
    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 = Grp;
            cmd.Parameters.Add("@Name", MySqlDbType.VarChar).Value = EmpList[i].Name;
            var reader = cmd.ExecuteReader();
            List<string> lineList = new List<string>();
            while (reader.Read())
            {
                lineList.Add(reader.GetString(0));
            }
            if (lineList.Count <=0)
            {
               WriteValidationFailure(EmpList[i], "Failed");
            }
    }       
    }
  }

使用cmd.Prepare()有什么好处;这会以任何方式改进我的代码。另外,我需要知道我的程序中是否有多个上述函数,并且每次在单个函数中给出using (MySqlCommand cmd = new MySqlCommand(selectQuery, conn))时,会增加代码的复杂性吗?我不熟悉从c#创建数据库连接,也不确定我的代码添加了多少复杂性。

1 个答案:

答案 0 :(得分:0)

实际上Prepare()方法在数据库中执行参数 StoredProcedure 时非常有用,当您调用Prepare()时,ADO会尝试检查参数类型和你提供的东西一样大小,在你不确定程序参数之前使用完全避免使数据库忙。给你提高表现。