这是一个从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;
}
  1. 这是一个安全的或好的方式来运行查询数据库从c#?

  2. 我读过关于参数查询。如何使用参数做到这一点?

这是一个从c#执行SQL Server数据库查询的好方法吗?

我看到一些事情引起了注意。

  1. 您的工作单元和存储库代码生活在同一个方法中。这限制了事务处理。嗯,在使用DA代码而不实现UOW/Repo方面已经做出了很多让步。所以这不是一个要求。
  2. 你有一个公共方法接受文本作为查询。只是要确保将其与任何类型的用户或API或可能访问的好旧的bobdrop表分开。(这回答了你的安全问题-它是安全的,如果它从接口分离,你的查询是"擦洗"进入之前)
  3. 数据集-我不是粉丝,在我看来它们非常臃肿。我通常使用DataReader,填充IList<>,然后收工。但无论如何,使用数据集(或数据表),如果你喜欢。
  4. 不使用using语句。您应该处理实现IDisposable的对象,using语句是实现这一点的一种简单方法。如果你把UnitOfWork从仓库中分离出来,那么我就不会提到这一点了——因为UnitOfWork会被处理在其他地方。

使用参数从连接和查询中创建一个SqlCommand对象。在该对象中,您可以向Parameters集合添加参数。

cmd.Parameters.AddWithValue("paramname", paramvalue);

将其提供给DataAdapter好运!