首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >运行SqlCommand.ExecuteScalar后,事务变为空

运行SqlCommand.ExecuteScalar后,事务变为空
EN

Stack Overflow用户
提问于 2017-11-09 21:49:37
回答 1查看 773关注 0票数 2

Server中有一个表,定义如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table Customer (ID varchar(10), Name varchar(200))

Insert into Customer 
values ('00001', 'Cust1'), ('ID00002', 'Cust2')

当我使用ID查询客户名(数据类型错误时,它是varchar,但它的值被传递为int),命令返回正确的名称,但是它的事务变为空,在尝试提交时,我会得到一个错误。

InvalidOperationException 这个SqlTransaction已经完成;它不再可用了。

我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using (var conn = new SqlConnection(connString))
{
    conn.Open();

    using (var trans = conn.BeginTransaction())
    {
        using (var cmd = new SqlCommand("SELECT Name FROM Customer WHERE ID = 1")) // After this command is executed, its transaction becomes null.
        //using (var cmd = new SqlCommand("SELECT Name FROM Customer  WHERE ID = '000001'")) // This runs fine.
        {
            cmd.Connection = conn;
            cmd.Transaction = trans;
            var res = cmd.ExecuteScalar();
        }

        trans.Commit(); 
    }
}

我能做些什么来检查这样的场景,并在命令执行时失败,而不是在稍后阶段获得异常?

EN

回答 1

Stack Overflow用户

发布于 2017-11-09 22:50:04

当输入表达式计算为有效的数字数据类型时,ISNUMERIC返回1;否则返回0。

你试试这个密码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  using (var conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["SchoolPlusDBContext"].ConnectionString))
        {
            conn.Open();

            using (var trans = conn.BeginTransaction())
            {
                using (var cmd = new SqlCommand("SELECT Name FROM Customer where  ISNUMERIC(id)=1 and Id=1")) // After this command is executed, its transaction becomes null.
                //using (var cmd = new SqlCommand("SELECT Name FROM Customer  WHERE ID = '000001'")) // This runs fine.
                {
                    cmd.Connection = conn;
                    cmd.Transaction = trans;
                    var res = cmd.ExecuteScalar();
                }

                trans.Commit();
            }
        }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47216417

复制
相关文章
oracle升级后数据文件路径变为大写
在某个时间点以后创建的数据文件,名称中的db_name和“datafile”都是大写,而以前都是小写。
PHP开发工程师
2021/05/17
6870
oracle升级后数据文件路径变为大写
接入cdn后界面打开异常,变为下载
1 出现此问题后,先要测试下源站是否正常,通过绑定host(绑定host可以将请求固定到源站),host文件的地址为:C:\Windows\System32\drivers\etc下的hosts
lee 9527
2020/11/07
2.9K1
SpringBoot 注入的@service为空,运行时报空指针
SpringBoot 注入的@service为空,运行时报空指针
Java架构师必看
2021/09/14
2.1K0
SpringBoot 注入的@service为空,运行时报空指针
[ASP.NET Core 3.1] 发布后Docker运行
docker run --name webtest -p 8080:8080 -d webtest:v1 打开防火墙端口号 8080
happlyfox
2020/05/26
3.7K0
移植FreeRTOS后运行,卡在uxDeletedTasksWaitingCleanUp
systick由freertos初始化,void SVC_Handler(void)、void PendSV_Handler(void)也已注释,但运行后会卡在while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U )。
小锋学长生活大爆炸
2020/08/13
2.4K0
手动集成TRTC后运行报错,+[AVAudioSession txc_enableHook:]
手动集成TRTC SDK后运行工程崩溃提示“erminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[AVAudioSession txc_enableHook:]: unrecognized selector sent to class 0x1d2b97170'”
小明同学接音视频
2022/02/11
7810
Sublime Text 执行后只有运行
分析:操作回忆:开始是可以看到运行结果的,后来在Tools>>Build with 选择了“Syntax Check”,进行了语法检查,后来再操作就如上了;
py3study
2020/01/16
9090
Gitlab 创建空Project后的初始化问题
我们如果通过GitLab 创建了一个项目后。如果直接进行TortoiseGit进行操作。
zinyan.com
2022/12/07
4.7K0
安装pyspider后运行pyspider all后遇到的问题
将C:\Python\Lib\site-packages\pyspider\webui.app.py中64行的代码进行修改
指剑
2022/07/15
9360
安装pyspider后运行pyspider all后遇到的问题
EasyNVR加密机授权后,通道和设备信息变为空白的解决办法
TSINGSEE青犀视频的所有视频服务云平台都有三种授权方式,分别是加密机、加密狗、激活码。由于激活码需要与服务器绑定,不能随意更换服务器,因此很多用户都热衷于选择加密机来进行授权。我们分享过不少关于加密机授权的配置教程文章,大家感兴趣可以查阅以往的文章。
EasyNVR
2022/01/14
3330
pycharm暂停了,如何继续运行_pycharm运行完后不退出运行
在pycharm中想要对一个程序同时多开几个运行窗口,并行的同时运行。但是会弹出下面提示:
全栈程序员站长
2022/09/27
5.8K0
pycharm暂停了,如何继续运行_pycharm运行完后不退出运行
screen关闭SSH后保持后台运行
我们通过SSH去连接linux服务器的,当我们退出或者端口SSH连接的话,当前正在执行的脚本文件也会被停止,因为linux服务器会在你退出SSH连接后,默认关闭进程,而不会hang up进程,所以不想一直保持SSH连接,又想一直保持服务器程序运行的解决办法如下: (这里以阿里云的CentOS系统为例)
乐心湖
2020/07/31
2.7K0
bat运行cmd命令后关闭窗口
将脚本保存为.bat后缀文件格式;然后双击这个bat文件可以测试脚本写的是否可用。
似水的流年
2022/04/20
16.3K0
刷新页面后this.$route.params 为空
深入学习 vue-router时,按官方文档的教程看下来,结果发现刷新页面后,打印的this.$route.params 为空
赤蓝紫
2023/01/05
9550
刷新页面后this.$route.params 为空
EasyNVR加密机授权后,通道和设备信息变为空白的解决办法
TSINGSEE青犀视频的所有视频服务云平台都有三种授权方式,分别是加密机、加密狗、激活码。由于激活码需要与服务器绑定,不能随意更换服务器,因此很多用户都热衷于选择加密机来进行授权。我们分享过不少关于加密机授权的配置教程文章,大家感兴趣可以查阅以往的文章。
EasyNVR
2022/05/06
3540
EasyNVR加密机授权后,通道和设备信息变为空白的解决办法
简单高效的代码优化-事务后异步处理
以电商平台为例,对于用户而言订单签收是订单正向流程的最后一环,也是用户高频使用的场景之一。
benym
2023/05/14
5270
简单高效的代码优化-事务后异步处理
简单高效的代码优化-事务后异步处理
以电商平台为例,对于用户而言订单签收是订单正向流程的最后一环,也是用户高频使用的场景之一。
benym
2023/04/23
9120
简单高效的代码优化-事务后异步处理
Laravel如何使用数据库事务及捕获事务失败后的异常详解
前言 如果大家在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法。如果在事务的闭包内抛出异常,事务将会被自动还原。如果闭包运行成功,事务将被自动提交。 你不需要担心在使用 transaction 方法时还需要亲自去手动还原或提交事务:
用户2323866
2021/07/12
1.7K0
在Laravel中使用数据库事务以及捕获事务失败后的异常
在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法。如果在事务的闭包内抛出异常,事务将会被自动还原。如果闭包运行成功,事务将被自动提交。你不需要担心在使用 transaction 方法时还需要亲自去手动还原或提交事务:
全栈程序员站长
2022/07/08
1.3K0
在Laravel中使用数据库事务以及捕获事务失败后的异常
点击加载更多

相似问题

SqlCommand.ExecuteScalar避免空

20

运行后续代码后,Zip变量变为空

111

viewDidLoad后NSArray变为空

32

通知后片段变为空

10

打印后非空输尿管变为空

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文