这是一个从c#执行SQL Server数据库查询的好方法吗?
本文关键字:查询 数据库 Server 方法 SQL 执行 一个 | 更新日期: 2023-09-27 18:05:16
我有下一个代码在我的系统中的数据库中运行查询。:
public static DataSet execute_query(string query)
{
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection();
con.ConnectionString = DataAccessLayer.Properties.Settings.Default.cn;
try
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(query, con);
da.Fill(ds);
}
catch (Exception ex)
{
ds = null;
}
finally
{
if (con.State == ConnectionState.Open) con.Close();
}
return ds;
}
这是一个安全的或好的方式来运行查询数据库从c#?
我读过关于参数查询。如何使用参数做到这一点?
我看到一些事情引起了注意。
- 您的工作单元和存储库代码生活在同一个方法中。这限制了事务处理。嗯,在使用DA代码而不实现UOW/Repo方面已经做出了很多让步。所以这不是一个要求。
- 你有一个公共方法接受文本作为查询。只是要确保将其与任何类型的用户或API或可能访问的好旧的bobdrop表分开。(这回答了你的安全问题-它是安全的,如果它从接口分离,你的查询是"擦洗"进入之前)
- 数据集-我不是粉丝,在我看来它们非常臃肿。我通常使用
DataReader
,填充IList<>
,然后收工。但无论如何,使用数据集(或数据表),如果你喜欢。 - 不使用
using
语句。您应该处理实现IDisposable
的对象,using语句是实现这一点的一种简单方法。如果你把UnitOfWork从仓库中分离出来,那么我就不会提到这一点了——因为UnitOfWork会被处理在其他地方。
使用参数从连接和查询中创建一个SqlCommand
对象。在该对象中,您可以向Parameters
集合添加参数。
cmd.Parameters.AddWithValue("paramname", paramvalue);
将其提供给DataAdapter
好运!