当前位置:编程学习 > C#/ASP.NET >>

求助sql语句运行时不是自己写的。。。

本人刚学asp.net,连接sqlserver时查询语句string sql = "select isnull(max(ordernum),0) from tb_test"到运行时就成了 sql = "select Max(ordernum) from tb_test"了。数据库表项查询为空,不能从DBNULL转化为其他类型,本来想为空就给它赋值0的。。。 --------------------编程问答-------------------- 不可能吧...是不是sql下面又重新赋值了 --------------------编程问答-------------------- select Max(ordernum) from tb_test
是查询出所有记录ordernum字段的最大值。这个字段是否存在?数据表是否有记录?还有要用cmd.ExecuteScalar()方法执行这条sql语句,然后将返回值转化为int就行了。 --------------------编程问答-------------------- select 0 from tb_test

这个是什么概念啊?

你要把所有列都变成0么? --------------------编程问答-------------------- select 0 from tb_test

这个是什么概念啊?

你要把所有列都变成0么?

--------------------编程问答-------------------- 打个断点调试下。 --------------------编程问答-------------------- 在数据库中查询都对的,本来表是空的,查询结果是单行单列0 ,另外,我把对sql语句的处理改成这样也会报错,DBNULL不能转化为其他类型。   
            public static int GetScalar(string safeSql)
            {            
                SqlCommand cmd = new SqlCommand(safeSql, Connection);
                object obj= cmd.ExecuteScalar();
                if(obj == null)
                    return 0;
                else return Convert.ToInt32(obj);
            } --------------------编程问答-------------------- obj获得的是DbNull类型,所以判断一下就行了:
if(obj Is DbNull)
return 0; --------------------编程问答-------------------- 注意obj的实际类型,null和DbNull是两种东西。 --------------------编程问答--------------------
Convert.IsDBNull(value) ? null : (int?)value;
--------------------编程问答-------------------- select Max(isnull(ordernum,0)) from tb_test 这样子就行了吧,把为Null的转化为0,并且求最大值! --------------------编程问答--------------------
select MAX(ISNULL(ordernum,0)) from tb_test
--------------------编程问答-------------------- select MAX(ISNULL(ordernum,0)) from tb_test
--------------------编程问答--------------------
引用 10 楼 guoyanhong1111 的回复:
select Max(isnull(ordernum,0)) from tb_test 这样子就行了吧,把为Null的转化为0,并且求最大值!


MM很灵活啊,大家都被固定思维禁锢的时候你跳出来了~~ --------------------编程问答-------------------- select Max(isnull(ordernum,0)) from tb_test  

正解

--------------------编程问答-------------------- select MAX(ISNULL(ordernum,0)) from tb_test --------------------编程问答-------------------- 还是不对,因为断点调试时,传进数据库的查询语句始终没有isnull这句,直接将isnull(a,b)替换为a
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,