gpt4 book ai didi

c# - 通过编程使用时,我的插入命令不会更改数据库

转载 作者:行者123 更新时间:2023-11-29 00:12:38 25 4
gpt4 key购买 nike

当我使用查询数据库插入值时,使用编码插入时它不会插入,尽管它显示成功。我使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com