【发布时间】:2012-11-23 18:33:54
【问题描述】:
如果我有这样的代码:
public T ExecuteQuery<T>(Func<IDataReader, T> getResult, string query, params IDataParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(this.DefaultConnectionString))
{
conn.Open();
// Declare the parameter in the query string
using (SqlCommand command = new SqlCommand(query, conn))
{
foreach (var parameter in parameters)
{
command.Parameters.Add(parameter);
}
command.Prepare();
using (SqlDataReader dr = command.ExecuteReader())
{
return getResult(dr);
}
}
}
}
public string GetMySpecId(string dataId)
{
return ExecuteQuery(
dr =>
{
if (dr.Read())
{
return dr[0].ToString();
}
return string.Empty;
},
@"select ""specId"" from ""MyTable"" where ""dataId"" = :dataId",
new SqlParameter("dataId", dataId));
}
}
如何保证
new SqlParameter("dataId", dataId));
一段代码是在传递一个文本还是一个整数?还有@"select..." 是如何像我熟悉的那样实际工作的:
select id from mytable where dataId = @dataID;
【问题讨论】:
-
@"select" 似乎只是文字字符串的一部分
-
这个参数化是否正确?
标签: c# .net sql .net-3.5 ado.net