在SQL表中使用C#更新值

时间:2015-01-20 12:42:46

标签: c# sql sql-server datagridview

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

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

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();

这是我要更新以下值的表格:

enter image description here

4 个答案:

答案 0 :(得分:4)

好吧,您只需要使用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();
}

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

将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