单独执行SQL语句成功,用C#执行SQL语句提示DBNull,很无奈~~

y7j1m51494 2016-04-18 08:43:15
SQL = String.Format("select a.snum1 + b.snum2 + c.snum3 + d.snum4 + e.snum5 from (select sum(cast(首次收款金额 as decimal(18,2))) snum1 from salescontentservice where 首次收款日期 >= '{0}' and 首次收款日期 <= '{1}')a , (select sum(cast(二次收款金额 as decimal(18,2))) snum2 from salescontentservice where 二次收款日期 >= '{2}' and 二次收款日期 <= '{3}')b , (select sum(cast(三次收款金额 as decimal(18,2))) snum3 from salescontentservice where 三次收款日期 >= '{4}' and 三次收款日期 <= '{5}')c ,(select sum(cast(四次收款金额 as decimal(18,2))) snum4 from salescontentservice where 四次收款日期 >= '{6}' and 四次收款日期 <= '{7}')d ,(select sum(cast(五次收款金额 as decimal(18,2))) snum5 from salescontentservice where 五次收款日期 >= '{8}' and 五次收款日期 <= '{9}')e", startdate, enddate, startdate, enddate, startdate, enddate, startdate, enddate, startdate, enddate);
object theit = dbt.ExecuteObject(SQL);
if (theit != System.DBNull.Value)
{
this.label1.Text = theit.ToString();
}
else

this.label1.Text = "";
...全文
181 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2016-04-18
  • 打赏
  • 举报
回复
看返回的数据是什么,监控一下
y7j1m51494 2016-04-18
  • 打赏
  • 举报
回复
dbt.ExecuteObject(SQL);为执行此SQL并返回object值
y7j1m51494 2016-04-18
  • 打赏
  • 举报
回复
SqlDateTime startdate = new SqlDateTime(dateTimePicker1.Value); SqlDateTime enddate = new SqlDateTime(dateTimePicker2.Value);
SqlScope 4.0 By Lostinet.com ISqlScope的模型和实现代码。附加例子。 优点: 自动分配释放数据库连接 执行数据库操作的代码不需要明确知道数据库连接的时间和地点,所以代码更容易编写和管理。 支持显式事务的多层嵌套。这样可以再任何时候建立回滚点和进行任何形式的提交或回滚。 使用using来对连接,查询,和事务进行管理,代码简洁明了。 支持多种常用的数据库访问的Method,使数据库操作代码更短。 通过把ISqlScope放到较大的范围内,可以实现该范围内数据连接的高效利用。 { 例如: using(ss.EnterQuery()) { DataGrid1.DataBind(); } 这个时候, DataGrid1_OnItemDataBound...里 { using(ss.EnterQuery())//数据库连接已打开,继续使用。 { //..进行查询和对DataGridItem进行操作 } } } 对例子进行测试: 如果您的电脑上启动了Microsoft SqlServer 2000并且启用了Windows验证, 那么这个例子就可以直接编译然后执行了。 不能运行的情况自己解决 关于ISqlScope.CreateXXX,ISqlScope.ExecuteXXX的参数都是 string cmdtext,params object[] sqlparams cmdtext是基本的sql语句。 sqlparams是附加的用于SQL查询操作的参数。 参数是可变长的,原理就像string.Format(str,a0,a1..)一样。 可以(cmdtext,p0,p1,p2..)这样调用,也可以直接传递object[]数组。 详细请看C#的params关键字 附加的参数按 @p0,@p1,@p2,...等名称输入到SqlCommand.Parameters中。有兴趣的看SqlScopeImpl.CreateCommand方法的代码 如果附加参数为null,那么将以DBNull.Value插入到SqlParameter中。 提示: 在Main中选择例子来运行。 最好先打开SqlServer事件探查器来监视程序对SqlServer的操作活动。 对于 ss.ExecuteXXX( @" SELECT * FROM Employees Where EmployeeID=@p0 ",cid); 这样的写法,最好为字符串的显示改变背景颜色。 操作:VS.Net-工具-选项-环境-字体和颜色-显示项-字符串(最下面) 背景色推荐改为浅灰色 例子: A,B,C是基本的数据库操作 D讲解了ExecuteReader,CreateAdapter,CreateCommand的用法。 E是事务的初步概念。 由E开始,深化地讲解一下ISqlScope对事务的操作的简便C#语法。 这个是和dotnet的Exception体制结合的很深的。 如果没有Exception的概念。建议先去看看dotnet中对于Exception的介绍。 所提供的例子不够复杂。如果有更高要求的应用,可以写信联系我。 lostinet@lostinet.com 2003-5-21 主要的实现由SqlScopeImpl移动到Connection中去了。 H,I是两个关于新特征的例子

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧