当我使用查询数据库插入值时,使用编码插入时它不会插入,尽管它显示成功。我使用 C# 2010 和 2012 两者都没有添加 我的代码
con.Open();
cmd = new SqlCommand("insert into Main_2(Name,NIC,NA_ID,PS_ID) values('" + name + "','" + nic + "',(SELECT NA_ID FROM NationalAssembly WHERE Name='" + na_name + "'),(SELECT PS_ID FROM ProvisionalAssembly Where Name='" + ps_name + "'))", con);
cmd = new SqlCommand("UPDATE ProvisionalAssembly SET Count=+1 WHERE Name='" + ps_name + "'", con);
cmd = new SqlCommand("UPDATE NationalAssembly SET Count=+1 WHERE Name='" + na_name + "'", con);
cmd.ExecuteNonQuery();
con.Close();
最佳答案
SqlCommand
是一个类,也就是说它是一个引用类型。
每次您创建一个新的 SqlCommand
对象并将其作为引用分配 cmd
时。这意味着只有最后一个 SqlCommand
会执行。当您使用 ExecuteNonQuery
方法执行时,您的前两个 SqlCommand
在内存中不再有引用。
如果要执行所有这些命令,需要对每个命令单独执行。
请使用parameterized queries .这种字符串连接对于 SQL Injection 是开放的攻击。
也可以使用 using statement处理您的数据库连接。
using(SqlCommand cmd = new SqlCommand(YourInsertStatement))
{
con.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = YourFirstUpdateStatement;
cmd.ExecuteNonQuery();
cmd.CommandText = YourSecondUpdateStatement;
cmd.ExecuteNonQuery();
}
关于c# - 通过编程使用时,我的插入命令不会更改数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24345387/