- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在获得有关我创建的一段代码的帮助后,我正尝试在事务中从 c# 进行异步 SQL 调用,例如,我可能正在更新或删除表中的行。
这是我目前所知道的,但我似乎找不到太多关于在事务中执行此操作的信息,根据我在这里所了解的和我目前所了解的,我相信它可能会尝试在命令之前提交事务如果命令耗时,则已完全完成。如果您能给我建议/举个例子,我将不胜感激。
var sqlQuery = "delete from table";
using (var connection = new SqlConnection(ConnectionString))
{
await connection.OpenAsync();
using (var tran = connection.BeginTransaction())
{
using (var command = new SqlCommand(sqlQuery, connection, tran))
{
await command.ExecuteNonQueryAsync();
tran.Commit();
}
}
}
谢谢,
最佳答案
您的代码看起来不错。我刚刚在命令的执行中添加了一个 try/catch,这样你就可以在失败时回滚你的事务。因为您在 await command.ExecuteNonQueryAsync();
行中使用了 await
关键字,所以无论需要多长时间,执行都会阻塞直到方法返回(除非超时命令本身的异常,在这种情况下,您应该将命令的执行超时设置得更高或弄清楚为什么它需要这么长时间。
var sqlQuery = "delete from table";
using (var connection = new SqlConnection(ConnectionString))
{
await connection.OpenAsync();
using (var tran = connection.BeginTransaction())
using (var command = new SqlCommand(sqlQuery, connection, tran))
{
try {
await command.ExecuteNonQueryAsync();
} catch {
tran.Rollback();
throw;
}
tran.Commit();
}
}
关于c# - ExecuteNonQueryAsync 并在 SQL 事务中提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36040111/
我想获取教授这种特定类型的老师的列表: public static async Task getTeacherSHS() { DataTable dt = new DataTable();
我想获取教授这种特定类型的老师的列表: public static async Task getTeacherSHS() { DataTable dt = new DataTable();
我以为我正在尝试做一些非常简单的事情。我只想在屏幕上报告一个运行编号,以便用户知道我正在执行的 SQL 存储过程正在运行,并且他们不会不耐烦并开始单击按钮。 问题是我不知道如何为 ExecutNonQ
我发现我的 C# 应用程序 UI 在调用异步方法时挂起,我不知道为什么。 private async void selectCSVFileButton_Click(object sender, Eve
我在获得有关我创建的一段代码的帮助后,我正尝试在事务中从 c# 进行异步 SQL 调用,例如,我可能正在更新或删除表中的行。 这是我目前所知道的,但我似乎找不到太多关于在事务中执行此操作的信息,根据我
我正在读取 Json 并将其插入表中。我想通过不等待来加速程序,因为每个插入都是唯一的。 出于测试原因,我创建了一个循环 for (int i = 0; i < 10; i++) { inse
我正在读取 Json 并将其插入表中。我想通过不等待来加速程序,因为每个插入都是唯一的。 出于测试原因,我创建了一个循环 for (int i = 0; i < 10; i++) { inse
我是一名优秀的程序员,十分优秀!