存储过程p_OperatorDetails,有四个参数@sDatetime,@eDatetime,@operatorNo,@transdesc。其中@operatorNo和@transdesc为两个可选参数,通过这四个参数如何从存储过程里面提取自己想要的特定数据字段,方法各异,这里我用的是用DataTable的相关操作。

首先打开数据库链接

string strCon = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"].ToString();
            SqlConnection conn = new SqlConnection(strCon);
            conn.Open();

创建dataTable对象

DataTable dt = new DataTable();

创建SQLDataadapt对象来操作数据源存储过程p_OperatorDetails

SqlDataAdapter da=new SqlDataAdapter("p_OperatorDetails",conn);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;

创建sql参数并为其赋值

SqlParameter p1 = new SqlParameter("@sDatetime", SqlDbType.DateTime);
            SqlParameter p2 = new SqlParameter("@eDatetime", SqlDbType.DateTime);
            SqlParameter p3 = new SqlParameter("@operatorNo", SqlDbType.Int);
            SqlParameter p4 = new SqlParameter("@transdesc", SqlDbType.VarChar);

p1.Value = sTransactionDateStart;
            p2.Value = sTransactionDateEnd;
            if (sOperatorNo != "")
            {
                p3.Value = Convert.ToInt32(sOperatorNo);
                da.SelectCommand.Parameters.Add(p3);
            }
            else
            {
                p3.Value = "";
            }
           
            if (sTransTypeNo != "")
            {
                p4.Value = sTransTypeNo;
                da.SelectCommand.Parameters.Add(p4);
            }
            else
            {
                p4.Value = "";
            }
       
            da.SelectCommand.Parameters.Add(p1);
            da.SelectCommand.Parameters.Add(p2);

通过SqlDataAdapter对象将得到的数据集填充到DataTable中去

da.Fill(dt);

注意直接得到的得到的DataTable对象是不能够进行sql操作的(可能我做的项目用这种方法并不适用于各位),关键的问题来了,我想要这个数据集里面的特点字段而不是整个存储过程所得到的数据集,我所使用的方法是用DataTable的Clone方法可能一张新的虚拟表来提供数据供我的报表使用。

DataTable newdt = new DataTable();
            newdt = dt.Clone();

DataTable中的数据不能够直接像实际数据表一样操作数据,但是也有它自己的方法

newdt = dt.DefaultView.ToTable(false, new string[] { "BankCardId", "EmployeeName", "Deptname", "TransDesc", "DeviceDateTime", "remain","OperatorName" });

至此,我想要的特定字段的虚拟表就出来了(报表用,做了几天发现这种方法还是最合适的,不知道各位大牛有没有更好的方法)。

最新文章

  1. Atitit.redis操作总结
  2. java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)
  3. 用ticons指令结合ImageMagickDisplay工具批量生成Android适应图片
  4. 淘宝(阿里百川)手机客户端开发日记第十五篇 JSON解析(四)
  5. MVC,布局页面
  6. [转载] DevOps年中盘点:国外最受欢迎的10篇技术文章
  7. 怎样打造一个分布式数据库——rocksDB, raft, mvcc,本质上是为了解决跨数据中心的复制
  8. Algorithm
  9. SRM 403(1-250pt, 1-500pt)
  10. JAVA中enum的常见用法
  11. Mesos-error
  12. bootstrap3 响应式布局栅格式布局
  13. 开源的.NET媒体文件操作组件TagLib#解析
  14. JavaScript 格式化时间
  15. 小议 HashMap
  16. Xshell利用lrzsz工具上传下载
  17. 使用本机IP调试web项目
  18. IDEA的几个常用配置,日常开发必备。
  19. 《Java大学教程》—第23章 Java网络编程
  20. redis出现错误:NOAUTH Authentication required.

热门文章

  1. 第8.9节 Python类中内置的查看直接父类的__bases__属性
  2. Day6【Scrum 冲刺博客】
  3. 【题单】最近遇见的 SHIT DP题 三连
  4. 通过Spring profile方式实现多环境部署
  5. Unity GameObject
  6. ATS (apache traffic server) http_ui 设置与使用
  7. vue第十四单元(认识单页面应用,理解vue-router的基本用法)
  8. vue第十单元(动态组件 keep-alive(钩子函数) 递归组件(name) 组件命名约定)
  9. vue第六单元(vue的实例和组件-vue实例的相关属性和方法-解释vue的原理-创建vue的组件)
  10. 图的建立以及应用(BFS,DFS,Prim)