我有一个函数调用连接到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()
但是我可以重复使用从一个函数到另一个函数的参数。
答案 0 :(得分:1)
&#34;重用我的conn和cmd以提高代码效率&#34;
您不必担心这一点。 C#通过使用称为连接池的东西来处理它。
所有&#34;关闭&#34;连接并没有真正关闭底层连接,而是返回到连接池供以后使用,这正是你想要做的事情