根据用户级别输入更新SQL Server表

时间:2013-03-26 10:57:43

标签: c# sql sql-server

我正在将表的内容读入我的C#应用​​程序,最终用户可以在其中编辑数据。然后我希望将这些新信息发回数据库。

DataTable Table = new DataTable("TestTable");
            using (SqlConnection _con = new SqlConnection(connectionString))
            {
                string queryStatement = "SELECT * FROM dbo.usr_Table ORDER BY code ASC";

                using (SqlCommand _cmd = new SqlCommand(queryStatement, _con))
                {
                    SqlDataAdapter _dap = new SqlDataAdapter(_cmd);

                    _con.Open();
                    _dap.Fill(Table);
                    _con.Close();
                }
            }

            dataGridView1.DataSource = Table;

我对SQL有足够的信心来编写一个UPDATE语句,内联我的C#代码,但这是最好/最有效的方法吗?

我必须根据新应用程序方面的每一行进行更新,我可以这样做吗?

SqlCommand sqlCmd = new SqlCommand("UPDATE usr_Table SET description= @description, subject = @subject, text = @text, status = @status WHERE code = @code", connectionString);

如果是这样,我如何将C#表中的值分配给变量?

非常感谢。

1 个答案:

答案 0 :(得分:1)

我个人使用LINQ来执行此类过程,但如果您想要或需要滚动自己的SQL查询,那么:

SqlCommand sqlCmd = new SqlCommand("UPDATE usr_Table SET description= @description, subject = @subject, text = @text, status = @status WHERE code = @code", connectionString);
sqlCmd.Parameters.Add(new SqlParameter("description", newDescription));
sqlCmd.Parameters.Add(new SqlParameter("subject", newSubject));
sqlCmd.Parameters.Add(new SqlParameter("text", newText));
sqlCmd.Parameters.Add(new SqlParameter("status", newStatus));
sqlCmd.Parameters.Add(new SqlParameter("subject", newSubject));
sqlCmd.Parameters.Add(new SqlParameter("code", code));

sqlCmd.ExecuteNonQuery();

这将使用新值为查询提供所有命名参数。