在 SQL 表中使用 C# 更新值

Posted

技术标签:

【中文标题】在 SQL 表中使用 C# 更新值【英文标题】:Updating Values with C# in SQL Table 【发布时间】:2015-03-18 16:50:01 【问题描述】:

我想知道更新按钮是否可以保存在表格中所做的更改。我写了这段代码,但我不知道它是如何工作的

这是我为更新按钮编写的代码:

string conString = "Data Source=MIRANDA-PC;Initial Catalog=Futebol do Rosa;Integrated Security=True";
SqlConnection con = new SqlConnection(conString);
string selectSql = "Update Players$ set Player Name='" + dataGridView2.Text + "";
SqlCommand cmd = new SqlCommand(selectSql, con);
con.Open();

这是我要更新值的表:

【问题讨论】:

【参考方案1】:

好吧,您只需要使用ExecuteNonQuery 执行查询。

但更重要的是,您应该始终使用parameterized queries。这种字符串连接对SQL Injection 攻击开放。

还可以使用using statement 来处理您的SqlConnectionSqlCommand

如果您的表或列名称超过一个单词,则需要将它们与[] 一起使用为[Player Name]。老实说,使用$ 登录表名有点奇怪。

using(SqlConnection con = new SqlConnection(conString))
using(SqlCommand cmd = con.CreateCommand())

    cmd.CommandText = "Update Players$ set [Player Name] = @name";
    cmd.Parameters.Add("@name", SqlDbType.NVarChar, 16).Value = dataGridView2.Text;
    con.Open();
    cmd.ExecuteNonQuery();

【讨论】:

【参考方案2】:

您必须使用 db 对象执行 SQL 查询。

dbinstance.ExecuteSqlCommand(string sqlcommand, object[] params);

此方法适用于 DDL 和 DML。 您也可以使用 ExecuteNonQuery 方法。

【讨论】:

【参考方案3】:
 cmd.CommandText = "Update Players$ set [Player Name] = @Playername";
    cmd.Parameters.Add("@Playername", SqlDbType.NVarChar, 16).Value = dataGridView2.Text;
    con.Open();
    cmd.ExecuteNonQuery();

【讨论】:

【参考方案4】:

将您的 DAL(数据访问层)转换为基于实体框架的最佳解决方案(如果可能),而不是编写您自己的 SQL 查询。这是安全的设计,永远不会受到任何形式的 SQL 注入的攻击。 这是一些样机代码:

using (AppEntities currDb = new AppEntities)

    Players PlayerToEdit =
    from player in currDb.Players
    where player.PlayerID == lngPlayerID
    select player.First();

    PlayerToEdit.PlayerName = dataGridView2.Text;
    currDb.SaveChanges();

您可以在这里阅读更多内容: https://msdn.microsoft.com/en-us/data/ef.aspx

【讨论】:

以上是关于在 SQL 表中使用 C# 更新值的主要内容,如果未能解决你的问题,请参考以下文章

在C#中使用SQL语句查询数据在表中是不是存在输出是或否

如何使用 C# 程序中的新值快速更新表中的所有行

由于使用自动增量添加到表中,如何使用更新的数据刷新 C# DataTable?

将新列添加到现有表中并使用 PL/SQL 中游标中的值更新它们

当没有明确的列可以加入时,如何使用另一个表中的值更新 sql 表?

Oracle:使用其他表中的值进行更新