我想知道更新按钮是否可以保存表中所做的更改。我写了这段代码,但我不知道它是如何工作的
这是我为更新按钮编写的代码:
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();
这是我要更新以下值的表格:
答案 0 :(得分:4)
好吧,您只需要使用ExecuteNonQuery
执行查询。
但更重要的是,您应该始终使用parameterized queries。这种字符串连接对SQL Injection攻击开放。
还可以使用using
statement来处置您的SqlConnection
和SqlCommand
。
如果您的表格或列名为多个字词,则需要将[]
用作[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