【问题标题】:what is the best practice on update data into SQL Server in ASP.Net在 ASP.Net 中将数据更新到 SQL Server 的最佳实践是什么
【发布时间】:2011-05-12 02:52:26
【问题描述】:

我正在将数据更新到 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();
}

请就最佳做法发表评论并提出建议。

提前谢谢你。

【问题讨论】:

    标签: c# .net asp.net sql sql-server


    【解决方案1】:

    您的第二种方法更好,但如果您使用Parameterized query for better prevention from a SQL Injection Attack 会更好。

    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_Announcement 看起来像一个存储过程调用,所以我将 CommandType.Text 更改为 CommandType.StoredProcedure
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 2013-06-17
    • 2010-09-05
    • 2014-03-25
    • 1970-01-01
    • 2010-12-01
    相关资源
    最近更新 更多