Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.Net中,将数据更新到SQL Server的最佳做法是什么_C#_.net_Asp.net_Sql_Sql Server - Fatal编程技术网

C# 在ASP.Net中,将数据更新到SQL Server的最佳做法是什么

C# 在ASP.Net中,将数据更新到SQL Server的最佳做法是什么,c#,.net,asp.net,sql,sql-server,C#,.net,Asp.net,Sql,Sql Server,我正在ASP.Net中将数据更新到SQL Server中 我只有一个cs文件,没有aspx/ascx文件,所以这里不使用SqlDataSource控件 下面是我的代码: string connStr = ConfigurationManager.ConnectionStrings["XXConnString"].ConnectionString; SqlConnection conn = new SqlConnection(connStr); if (conn.State == Connec

我正在ASP.Net中将数据更新到SQL Server中

我只有一个cs文件,没有aspx/ascx文件,所以这里不使用SqlDataSource控件

下面是我的代码:

string connStr = ConfigurationManager.ConnectionStrings["XXConnString"].ConnectionString;

SqlConnection conn = new SqlConnection(connStr);

if (conn.State == ConnectionState.Closed)
{
    conn.Open();
}

string query = @"exec dbo.XX_Insert_Announcement @AnnID ='" + id +
                                            "', @AnnTitle ='" + title +
                                            "', @AnnSubmitDateTime ='" + startDate + 
                                            "', @AnnProcessDateTime ='" + endDate + "'";

SqlCommand cmd = new SqlCommand(query, conn);
cmd.ExecuteNonQuery();
conn.Close();

if (conn.State == ConnectionState.Open)
{
    conn.Close();
}
我认为我的代码对于错误处理来说不够好,如果查询执行失败,不会抛出错误,并且代码在不更新数据库的情况下继续运行

也许使用Using语句可以解决这个问题,代码如下:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    SqlCommand command = new SqlCommand(queryString, connection);
    command.Connection.Open();
    command.ExecuteNonQuery();
}
请就最佳实践提出意见和建议


提前感谢。

您的第二种方法更好,但如果您使用
参数化查询更好地防止SQL注入攻击,则效果会更好

using (SqlConnection connection = new SqlConnection(connectionString))
{
 using(SqlCommand command = connection.GetCommand(queryString, CommandType.Text))
 {
  command.Parameters.Add(new SqlParameter("AnnID", id));
  command.Parameters.Add(new SqlParameter("AnnTitle", title));
  ............
  ..............
  command.Connection.Open();
  command.ExecuteNonQuery();
 }
}

exec dbo.XX_Insert_公告看起来像一个存储过程调用,因此我将CommandType.Text更改为CommandType.StoredProcedure