奇怪!同一条sql语句在数据库和代码中执行结果不同?!当然是人错了 ……_技术黑板报的博客-程序员信息网

技术标签: c#  winform  软件工程  sql  

    sql语句就是它:


    

select count(1) from syscolumns where [id]=object_id( 'tablecommon' )

 


    判断数据库中是否存在表tablecommon,本想让在数据库中查到的值返回到程序里,值却总不是想要的:


    程序里返回 -1

    sql里返回大于0的值(意为存在该表)

    如果代码正确的话,程序里应该返回和sql里一样的值


    程序里是这么写的:


    D层类:





    SqlHelper类:


        执行不带参数的查询存储过程或sql语句:


        public DataTable ExecuteQuery(string cmdText, CommandType cmdType)
        {
            DataTable dt = new DataTable();
            cmd = new SqlCommand(cmdText, GetConn());
            cmd.CommandType = cmdType;
            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sdr);
            }
            return dt;
        }



        执行不带参数的增删改存储过程或sql语句:



        public int ExecuteNonQuery(string cmdText, CommandType cmdType)
        {
            int res;
            try
            {
                cmd = new SqlCommand(cmdText, GetConn());
                cmd.CommandType = cmdType;
                res = cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
            return res;
        }



    看到这里有没有发现我犯的错误?



    没错,我调用SqlHelper方法调错了,咱们开始缕:


    我写的是一个select语句,是用来查询的,虽然返回结果可以用来直观判断表的存在与否,但不能直接调用返回值是int类型的增删改方法!

    仍需调用返回值是datatable类型的查询方法,之后将datatable中的值强制转换为int类型



    所以,接下来,将D层类修改下,就搞定了!

    

    

        public bool IsExitsTable()
        {
            Boolean flag = false;
            string sql = "IfExistsTable";
            DataTable dt=sqlhelper.ExecuteQuery(sql,CommandType.StoredProcedure);

            int res = Convert.ToInt32(dt.Rows[0][0]);
            if (res > 0)
            {
                flag = true;
                return flag;
            }
            else
            {
                return flag;
            }            
        }



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012407484/article/details/50433581

智能推荐

Android 5.0,6.0新特性_nnnkkkhhh的博客-程序员信息网_com.android.support:design

转载自http://blog.csdn.net/tianzhu2725/article/details/52775285Android 5.0新特性1. 了解Material Design概念:融合卡片式,立体式的设计风格,强调层次感,动画,阴影等元素国内翻译介绍:查看 http://design.1sters.com官网介绍:http://developer.androi

mycat linux 搭建,分表分库,增长长插入_明耀的博客-程序员信息网

下载Mycat-server-1.6.7.1-release-20200209222254-linux.tar下载地址:Mycat-server-1.6.7.1-release-20200209222254-linux.tar解压 进入bin 启动./mycat start 启动./mycat stop 停止./mycat restart 重启mycat分库分表server.xml<?xml version="1.0" encoding="UTF-8"?>..

Android 微信支付详解与Demo_九九999的博客-程序员信息网

2016十二月02原Android 微信支付详解与Demo分类:Android应用层 (4298)(41)举报 收藏 最近公司弄Ionic框架,项目中需要微信支付,无奈,把我调过去弄,期间也是几近崩溃,好在皇天不负有心人,在看别人的文档,终于是在项目中集成了微信支付,下面作为一个小白的我,想要把我的经验分享给大家,希望对大家有所帮助。

Select For update语句浅析_hellozhxy的博客-程序员信息网_select for uodate of 可以指定表吗

Select …forupdate语句是我们经常使用手工加锁语句。通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作。同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所阻碍。 借助for update子句,我们可以在应用程序的层面手工实现数据加锁保护操作。本篇我们就来介绍一下这个子句的用法和功能。 下面是采自Oracle官方文档《SQLLangua...

java判断socket_java socket 判断Socket连接失效_Ivankaswift的博客-程序员信息网

要判断socket连接链路是否可用时,不能通过socket.isClosed()和socket.isConnected()方法判断,要通过心跳包 socket.sendUrgentData(0xFF) 。当第一次连接成功后,socket.isClosed() ==false,socket.isConnected()==true,只有在自己端代码中显示调用socket.close()方法时...

Sql Server 报error 40连接错误该如何解决?_SQL数据库开发的博客-程序员信息网

点击上方SQL数据库开发,关注获取SQL视频教程SQL专栏SQL数据库基础知识汇总SQL数据库高级知识汇总经常会有小伙伴反馈连接错误,今天就给大家重现一下这个错误和解决方法吧,下次如果哪...

随便推点

成功解决TypeError: ‘float’ object cannot be interpreted as an index_一个处女座的程序猿的博客-程序员信息网

成功解决TypeError: ‘float’ object cannot be interpreted as an index目录解决问题解决思路解决方法解决问题TypeError: ‘float’ object cannot be interpreted as an index解决思路类型错误:“float”对象不能解释为...

【Flink实战系列】Flink 的分布式缓存使用_JasonLee实时计算的博客-程序员信息网

Flink提供了一个分布式缓存,类似于Apache Hadoop,可以在本地访问用户函数的并行实例。此函数可用于共享包含静态外部数据的文件,如字典或机器学习的回归模型。缓存的工作原理如下。程序在其作为缓存文件的特定名称下注册本地或远程文件系统(如HDFS或S3)的文件或目录ExecutionEnvironment。执行程序时,Flink会自动将文件或目录复制到所有工作程序的本地文件系统。用户函...

^[A-Za-z0-9\u4E00-\u9FA5-]{2,16}$ 对英文、数字、中文的验证_weixin_34277853的博客-程序员信息网

^[A-Za-z0-9\u4E00-\u9FA5-]{2,16}$\u4e00-\u9fa5;php正则表达式匹配汉字:根据页面编码:1.gb231<?php$str="i love 你 my 祖国!";preg_match_all("/[\x80-\xff]+/",$str,$match);print_r($match);?>2.utf-8<?php$str="zho...

中国首次包揽IOI 2021前四!人大附中邓明扬满分夺金_深度学习技术前沿的博客-程序员信息网

转自:量子位2021年国际信息学奥赛(IOI 2021)已经落下帷幕。这次中国队包揽了前四名,创造了IOI竞赛历史上首次由同一国家选手包揽前四的记录!而第一名则是全场唯一一位满分!他们分别...

架构思维成长系列教程(五)- 微服务大型复杂系统的架构实践_贺敏Minbo的博客-程序员信息网_基础服务层

背景大型互联网系统,业务逻辑较为复杂,或者由于海量、高并发等场景增加了技术架构的复杂性,这时候需要对复杂系统做解耦,这里就要用到消息中间件来给系统做解耦。内容消息中间件用法我们先了解几个概念:耦合性(Coupling):也叫耦合度,是对模块间关联程度的一个度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。一般来说,模块间联系越多,其耦合性越强,同时表明其独立性越差。软

免费IP地址查询API接口_咻一咻的博客-程序员信息网

快递查询http://www.kuaidi100.com/query?type=quanfengkuaidi&postid=390011492112(PS:快递公司编码:申通"shentong" EMS"ems" 顺丰"shunfeng" 圆通 "yuantong" 中通 "zhongtong" 韵达"yunda" 天天"tiantian" 汇通"huitongkuaidi" 全峰 "

推荐文章

热门文章

相关标签