一直在习惯.net的编程思维,或是说C#吧。因为前几年一直在用PHP做站,现在用.net很不习惯,主要C#都依赖对控件、类的熟悉,不然很多功能都实现不了。

需求

最近做了一功能,从SQL Server中取出授权记录,再从Oracle数据库中(又是Oracle)读取对应条件的状态,然后判断SQL中的授权是否合法。由于SQL中的授权已经实现了,之前是通过人工到ORACLE中查询是否合法,现打算让系统自动判断。

方法

之前是将dataset绑定到repeater控件,现在想到一个办法就是修改绑定前dataset中的datatable,添加一字段用来判断是否合法。废话不多说,贴代码:

  • 获取SQL的表,并添加一新列
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds,"tauth"); //注意给ds的表取个别名,方便后面删除 dt = ds.Tables[];
dt.Columns.Add("oaHave", typeof(System.String));
  • 获取ORACLE的数据
OleDbDataAdapter oda = new OleDbDataAdapter(ocmd);
oda.Fill(ods);
odt = ods.Tables[];
  • 循环判断是否合法
 for (int i = ; i < dt.Rows.Count; i++) {
dr = dt.Rows[i];
dr.BeginEdit();
for (int j = ; j < odt.Rows.Count; j++) {
odr = odt.Rows[j];
if (dr["fname"].ToString() == odr["lastname"].ToString()) {
msg = dr["fname"].ToString();
dr["oaHave"] = "有";
}
}
dr.EndEdit();
}
  • 删除dataset已存在的表,再添加更新后的datatable
ds.Tables.Remove("tauth");
ds.Tables.Add(dt);
//绑定DS到Repeater
rptAuth.DataSource = ds;
rptAuth.DataBind();

其它功能

没怎么用,但是大概了解dataset、datatable的使用方法,像排序、删除行、添加行这些都可以比较灵活地实现。

只是注意一点:如果是绑定到repeater控件,那么这些修改完成后的datatable,需要重新写入dataset。

.NET DataSet、DataTable操作记录的更多相关文章

  1. DataSet DataTable操作

    DataSet ds = new DataSet();            DataTable dt = new DataTable("OrderList");          ...

  2. C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换

    LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...

  3. DataSet,DataTable,DataColumn,DataRow的常用操作

    DataSet 这个玩意没什么好讲的,当ado.net查询出有多张表集合的数据返回时,这个时候就会使用到DataSet. DataTable //表之间直接赋值 dt2=dt1; 两者指向同一内存空间 ...

  4. C#使用DataSet Datatable更新数据库的三种实现方法

    本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参 ...

  5. dataset datatable datacolums datarow

    DataSet 表示数据在内存中的缓存. 属性 Tables  获取包含在 DataSet 中的表的集合. ds.Tables["sjxx"] DataTable 表示内存中数据的 ...

  6. 什么叫强类型的DATASET ?对DATASET的操作处理?强类型DataSet的使用简明教程

    强类型DataSet,是指需要预先定义对应表的各个字段的属性和取值方式的数据集.对于所有这些属性都需要从DataSet, DataTable, DataRow继承,生成相应的用户自定义类.强类型的一个 ...

  7. Spark Dataset DataFrame 操作

    Spark Dataset DataFrame 操作 相关博文参考 sparksql中dataframe的用法 一.Spark2 Dataset DataFrame空值null,NaN判断和处理 1. ...

  8. centos 6x系统下源码安装mysql操作记录

    在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配.可以通过源 ...

  9. Mysql更换MyISAM存储引擎为Innodb的操作记录

    一般情况下,mysql会默认提供多种存储引擎,可以通过下面的查看: 1)查看mysql是否安装了innodb插件.通过下面的命令结果可知,已经安装了innodb插件. mysql> show p ...

随机推荐

  1. C++的学习资源

    本文总结了几个好的C++网站,以及C++方面的经典书籍.所列书籍或标准可以到这里找找电子版. wikipedia关于C++有关条目,注意看后面“参考文献”和“外部链接”: C++ programmin ...

  2. MySQL 重装

    由于之前第一次装MySQL,默认的datadir在启动盘中,我想要将datadir移动到更大的存储盘中.无奈网上的各种文章的方法在我这里总是不work.我决定重新用homebrew来装一遍MySQL. ...

  3. 深入理解 C 语言的函数调用过程

    来源: wjlkoorey 链接:http://blog.chinaunix.net/uid-23069658-id-3981406.html 本文主要从进程栈空间的层面复习一下C语言中函数调用的具体 ...

  4. js 打印星星金字塔

    /** * * 第一行: * * 第二行: *** * 第三行: ***** * 第四行: ******* * 第五行: ********* * */ document.write('<p al ...

  5. 顶点缓存对象(VBO)

    创建VBO 绘制VBO 更新VBO 实例 GL_ARB_vertex_buffer_object扩展致力于提供顶点数组与显示列表的优势来提升OpenGL效率,同时避免它们实现上的不足.顶点缓存对象(V ...

  6. socket入门基础

    #/usr/bin/python #-*- coding:utf-8 -*- import socket ip_port = ('127.0.0.1',111) #创建socket对象 sk = so ...

  7. .split()函数使用方法

    split说明 split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list) split语法 str.split('type',num)[n] 整个语法的意思是:以 ...

  8. floyd算法

    求两个顶点间的最短距离,直觉是这样的问题可以用尝试和枚举的办法来求解,这显然可行,但是我们可以换个方式来看待这个问题,比如, 可以这样描述,“在给定的点集(编号为1~k,k=图中所有的顶点数量)中,i ...

  9. virtio-blk简介[转]

    声明: 本博客欢迎转发,但请保留原作者信息!新浪微博:@孔令贤HW: 博客地址:http://lingxiankong.github.io/内容系本人学习.研究和总结,如有雷同,实属荣幸! virti ...

  10. CSS 选择器(转)

    原文转自:http://www.cnblogs.com/xyzhanjiang/p/5447406.html CSS 选择器除了样式表匹配元素时需要用到,在使用 jQuery 等库的时候也可以利用 C ...