在性能方面,在处理动态SQL和ADO.NET连接时,是否优先在输入时传递参数或使用纯文本SQL语句字符串?
之间是否有明显差异
使用参数
public void InsertData(DateTime dateFor, string message)
{
using (var connection = new SqlConnection(connString))
{
connection.Open();
var sql = "INSERT INTO [dbo].[Data] (DateFor, Message) VALUES(@DateFor, @Message);";
connection.Execute(sql, new { DateFor = dateFor, Message = message });
}
}
和
使用纯文本SQL语句
public void InsertData(DateTime dateFor, string message)
{
using (var connection = new SqlConnection(connString))
{
connection.Open();
var sql = string.Format("INSERT INTO [dbo].[Data] (DateFor, Message) VALUES('{0}', '{1}');", dateFor.ToString("yyyy-MM-dd HH:mm:ss"), message);
connection.Execute(sql);
}
}
我是否倾向于使用一种方法而不是另一种方法?
(我正在使用Dapper作为这个例子,如果有人想知道数据绑定语法)