[英]Definition of a Data Access Layer in .NET 3.5
我有以下代碼,是由我的Web項目中的其他人編寫的:
StringBuilder sql = new StringBuilder("");
// Define sql
sql.Append("SELECT title ");
sql.Append("FROM MyTable ");
sql.Append(string.Format("WHERE id = {0} AND Var = '{1}'", myId, myVar));
DataTable dtGroups = SqlHelper.GetDataTable(sql.ToString());
if (dtGroups.Rows.Count > 0)
{
foreach (DataRow dr in dtGroups.Rows)
{
return dr["title"].ToString();
}
}
return "";
然后我有一個名為SqlHelper.cs的輔助類,它有這個方法:
public static DataTable GetDataTable(string sql) {
return GetDataTable(sql, MyConnectionString);
}
SqlHelper類是否構成DAL? 做事的正確方法是什么? 我應該創建一個DAL類,您將發送sql並返回標題(如SqlHelper.GetTitle(sql))?
那段代碼很糟糕 。 SQL注入; DataTable無緣無故; StringBuilder無緣無故。 這里簡單地完成,使用“dapper”(在NuGet上免費提供):
using(var conn = GetSomeConnection()) { // <== todo
return conn.Query<string>(
"select title from MyTable where id=@id and Var=@var",
new { id = myId, var = myVar }).FirstOrDefault() ?? "";
}
這是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.