C# 在ASP.Net中,将数据更新到SQL Server的最佳做法是什么
我正在ASP.Net中将数据更新到SQL Server中 我只有一个cs文件,没有aspx/ascx文件,所以这里不使用SqlDataSource控件 下面是我的代码: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
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