我正在 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 注入(inject)攻击
,效果会更好。
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();
}
}
关于c# - 在 ASP.Net 中将数据更新到 SQL Server 的最佳实践是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5972834/