我使用参数化选择查询来查询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#创建数据库连接,也不确定我的代码添加了多少复杂性。
答案 0 :(得分:0)
实际上Prepare()
方法在数据库中执行参数 StoredProcedure
时非常有用,当您调用Prepare()
时,ADO会尝试检查参数类型和你提供的东西一样大小,在你不确定程序参数之前使用完全避免使数据库忙。给你提高表现。