C# 开始事务时出错
我尝试在SQL Server上执行begin事务,但它返回一个错误,我无法找出真正的问题是什么。这是我试过的一些代码 这就是错误: 代码:C# 开始事务时出错,c#,.net,sql-server,C#,.net,Sql Server,我尝试在SQL Server上执行begin事务,但它返回一个错误,我无法找出真正的问题是什么。这是我试过的一些代码 这就是错误: 代码: 您可以使用SqlTransaction using (SqlConnection conn = new SqlConnection("Connection String")) { conn.Open(); SqlTransaction trans; trans = conn.BeginTransaction(); strin
您可以使用SqlTransaction
using (SqlConnection conn = new SqlConnection("Connection String"))
{
conn.Open();
SqlTransaction trans;
trans = conn.BeginTransaction();
string selectQuery = "your sql query";
SqlCommand command = new SqlCommand(selectQuery, connection);
int iResult = command.ExecuteNonQuery();
if (iResult > 0)
{
trans.Commit();
}else{
trans.Rollback();
}
conn.Close();
}
通过使用@和“不准确”中的值块中的语法,为select查询使用格式化字符串
string selectQuery = @"
BEGIN TRANSACTION
UPDATE tester SET test_ad = @dateTimePicker1, test_ud = @dt, test_pd = @dt WHERE test_name = @textBox1;
INSERT INTO records(testr_status, testr_name, testr_ad, testr_ud, testr_pd, apte_name) VALUES(@testr_status, @comboBox1, @dateTimePicker1, @dt, @dt);
COMMIT";
尝试清理一下您的查询,或者将其粘贴到SSM上,并声明您的参数,您将发现问题所在 在您的情况下,
INSERT
语句有一些错误
值(test_name=@combobox1)
而是只传递参数值(@combobox1)
INSERT
语句中的列多于values
子句中指定的值,您没有为apte\u name提供值。在c代码中,您也需要添加该参数VALUES
子句缺少右括号实际的问题是,这是一个大的、无效的SQL语句。使用分号分隔语句,如下所示:
"BEGIN TRANSACTION;
INSERT ...;
UPDATE ...;
ETC ...;
COMMIT;"
也就是说,不要在查询字符串中嵌入事务语句。按照Oliver在另一个答案中的建议执行。如果抛出异常,您可能还希望回滚。回滚是自动的。异常时,using块将退出,关闭连接,隐式回滚任何打开的事务。
testr\u name=@comboBox1
在更新中有意义。它在插入时没有意义。删除testr\u name=
等。有关事务要求,请参阅。这不是对您的问题的回答,但我认为您应该阅读此说明INSERT
语句无效。谢谢。它正在工作!但当我在ssms中检查它时,它插入了两条记录(重复记录)。我可以知道为什么吗?
string selectQuery =
@"BEGIN TRANSACTION
UPDATE tester SET
test_ad = @dateTimePicker1,
test_ud = @dt,
test_pd = @dt
WHERE test_name = @textBox1;
INSERT INTO records
(
testr_status,
testr_name,
testr_ad,
testr_ud,
testr_pd,
apte_name
)
VALUES
(
@testr_status,
@comboBox1,
@dateTimePicker1,
@dt,
@dt,
@apte_name
);
COMMIT";
"BEGIN TRANSACTION;
INSERT ...;
UPDATE ...;
ETC ...;
COMMIT;"