在ADO.NET中使用方法的性能影响
本文关键字:性能 影响 使用方法 ADO NET | 更新日期: 2023-09-27 18:27:42
而不是像这样执行查询的传统方式:
protected void btnAdd_Click(object sender, EventArgs e)
{
SqlConnection connection = new SqlConnection(
ConfigurationManager.ConnectionStrings["MyCon"].ConnectionString);
connection.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection;
cmd.CommandText = "INSERT INTO Test VALUES (@FN, @LN, @DateAdded)";
cmd.Parameters.AddWithValue("@FN", txtFN.Text);
cmd.Parameters.AddWithValue("@LN", txtLN.Text);
cmd.Parameters.AddWithValue("@DateAdded", DateTime.Now);
cmd.ExecuteNonQuery();
connection.Close();
}
我创建了一个单独的类,允许我通过确定SQL语句及其参数(名称和值)来重用执行查询的方法:
DB.cs
static SqlConnection connection = new SqlConnection(
ConfigurationManager.ConnectionStrings["MyCon"].ConnectionString);
public static void Execute(string query, SqlParameter[] parameters)
{
using (connection)
{
using (SqlCommand command = new SqlCommand(query, connection))
{
foreach (SqlParameter parameter in parameters)
{
command.Parameters.Add(parameter);
}
connection.Open();
command.ExecuteNonQuery();
}
}
}
这样我就可以在这里减少我的编码过程:
protected void btnAdd_Click(object sender, EventArgs e)
{
string SQL = "INSERT INTO Test VALUES (@FN, @LN, @DateAdded)";
SqlParameter[] parameters = {
new SqlParameter("@FN", txtFN.Text),
new SqlParameter("@LN", txtLN.Text),
new SqlParameter("@DateAdded", DateTime.Now)
};
DB.Execute(SQL, parameters);
}
这样做是否会对性能产生影响?此外,是否有改进现有代码的方法?谢谢
这两种方法之间不应该有性能差异,因为在这两种情况下都使用参数化查询。由于您直接使用SqlCommand
的方法(与IDbCommand
的方法相反)进行编程,因此对其他RDBMS提供程序的可移植性也没有区别,因为这两种实现都与SQL Server绑定。
您可以通过标记第二个参数params
,即,使接口更易于使用
public static void Execute(string query, params SqlParameter[] parameters)
这会让你打这样的电话:
DB.Execute(
"INSERT INTO Test VALUES (@FN, @LN, @DateAdded)"
, new SqlParameter("@FN", txtFN.Text)
, new SqlParameter("@LN", txtLN.Text)
, new SqlParameter("@DateAdded", DateTime.Now)
);