重用连接和准备语句到mysql数据库

时间:2017-03-13 19:13:30

标签: c# mysql

我有一个函数调用连接到mysql数据库的不同函数并查询数据库。在这里,我不确定如何重用我的conn and cmd以提高代码效率。要在Validation()中创建一次连接,并在我尝试连接到数据库的任何地方重用它们。以下是我正在做的事情

    private static void Validation(List<Employee> EmpList, string Group)
    {
        ValidateName(EmpList, Group);
        ValidateDept(EmpList, Group);
     }
    public static void ValidateName(List<Employee> EmpList, string Grp)
    {
        var connStr = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;

        string selectQuery;

        for (int i = 0; i < EmpList.Count; i++)
        {
           selectQuery = "Select Name from Employee where Group = @Group  AND @Name in (FirstName, LastName);";
            using (MySqlConnection conn = new MySqlConnection(connStr))
            using (MySqlCommand cmd = new MySqlCommand(selectQuery, conn))
            {
                cmd.Parameters.Add("@Group", MySqlDbType.VarChar).Value = Grp;
                cmd.Parameters.Add("@Name", MySqlDbType.VarChar).Value = EmpList[i].Name;
                conn.Open();
                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");
                }
                conn.Close();
        }       
      }
    }

   public static void ValidateBreedingDept(List<Employee> EmpList, string Grp)
    {
        var connStr = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;

        string selectQuery;

        for (int i = 0; i < EmpList.Count; i++)
        {
            selectQuery = "Select DepartmentName from Department where Group = @Group AND DepartmentName = @Dept;";
            using (MySqlConnection conn = new MySqlConnection(connStr))
            using (MySqlCommand cmd = new MySqlCommand(selectQuery, conn))
            {
                cmd.Parameters.Add("@Group", MySqlDbType.VarChar).Value = Grp;
                cmd.Parameters.Add("@Dept", MySqlDbType.VarChar).Value = EmpList[i].Dept;
                conn.Open();
                var reader = cmd.ExecuteReader();
                List<string> lineList = new List<string>();
                while (reader.Read())
                {
                    lineList.Add(reader.GetString(0));
                }
                if (lineList.Count <= 0)
                {
                    WriteValidationFailure(listOfMouse[i], "Failed");
                }
                conn.Close();
            }
        }
    }

我是新手连接数据库并从c#查询。以及如何重写查询以使用Prepare语句。我知道我可以使用cmd.Prepare()但是我可以重复使用从一个函数到另一个函数的参数。

1 个答案:

答案 0 :(得分:1)

&#34;重用我的conn和cmd以提高代码效率&#34;

您不必担心这一点。 C#通过使用称为连接池的东西来处理它。

所有&#34;关闭&#34;连接并没有真正关闭底层连接,而是返回到连接池供以后使用,这正是你想要做的事情

Read more on MSDN