ADO.NET 的使用(二)
一、本篇主要讲ADO.NET的核心DataSet
DataSet里面有个DataTable,DataTable还有个对应的DataView
首先呢,假设数据库的数据
| id | name | mob |
|---|---|---|
| 100 | 张三 | 15412486 |
| 102 | 李四 | 12789556 |
| 103 | 王五 | 45876133 |
缓解眼疲劳图片1

二、DataTable
根据sql语句获取数据复制一份到内存中,从内存中获取DataTable,然后我们可以对其进行修改,最终将DataTable里面的数据json序列化
DataSet DS=bll.GetData();//后端获取数据
DataTable dt=DS.Tables[0];//得到DataTable
//接下来就是如何处理DataTable里面的数据
////Table操作
DataTable newDt=dt.Clone();//克隆表的结构(不包含数据)
DataTable copyDt=dt.Copy();//克隆表的结构和数据
DataRow[] rows=dt.Select("条件");//选取符合条件的行
////列操作
//新增一列
dt.Columns.Add("sex", typeof(string));//列名-sex,类型是string型
//dt.Columns.Add("sex", typeof(string)).SetOrdinal(1);//在指定的位置增加一列
//给新增的一列赋值
foreach(DataRow dr in dt.Rows)
{
dr["sex"]="男";
}
//删除某一列
dt.Columns.Remove("name");删除name这一列
////行操作
//新增一行
DataRow newRow=dt.NewRow();
newRow["id"]=104;
newRow["name"]="萧炎";
newRow["mob"]="12345678";
dt.rows.add(newRow);
//选取某些行
DataRow[] rows=dt.Select("id>100");选取id>100的行
//遍历操作
foreach(DataRow row in rows)
{
string name=row["name"].ToString();
}
三、DataView
我们知道DataTable是从sql数据库里复制出来的一份数据,可以对DataTable进行操作(但不修改数据库里面的数据),比如新增一列、新增一行、修改列名、修改数据或者通过Select()方法进行筛选操作等。DataTable里面的数据是已经排好序的,但是我们是不好对DataTable进行重新排序的,如果要排序的话,难道要通过sql语句再次读取数据库吗?
那什么时候使用DataView呢?
官方上讲:DataView主要用于排序、筛选、搜索、编辑和导航。重点:修改DataView的数据,对应的DataTable数据也会改变,反之,对应的DataView数据也会随之改变。
其实呢,经实践证明:筛选、搜索等操作DataTable中的Select()方法也能做到,而且比DataView更快。毕竟DataView只是DataTable里面的数据虚拟出来的一个视图。
DataSet DS=bll.GetData();//后端获取数据
DataTable dt=DS.Tables[0];//得到DataTable
DataView dv=dt.DefaultView;//得到DataTable对应的视图
//DataView dv = new DataView(dt);//也可以这样写
//筛选操作
dv.RowFilter="id='100'";//sql where 后面的条件语句
//这个RowFilter是DataView的属性,进行筛选操作,我们只需设置它的值即可,下面的Sort也是如此
//排序操作
dv.Sort="id desc";//sql order by 后面的排序语句
缓解眼疲劳图片2

四、总结
在实际工作中,我们通过sql语句只从数据库里读取一次,然后将读取的数据进行操作。在这里,我想大家看完本篇博文应该知道,处理数据的时候,能使用DataTable进行筛选的就使用DataTable里面的方法(Select()方法等),如果不能达到效果,再考虑使用DataView进行处理。
ADO.NET 的使用(二)的更多相关文章
- 使用ADO实现BLOB数据的存取 -- ADO开发实践之二
使用ADO实现BLOB数据的存取 -- ADO开发实践之二 http://www.360doc.com/content/11/0113/16/4780948_86256633.shtml 一.前言 在 ...
- ADO。Net(二)——防止SQL注入攻击
规避SQL注入 如果不规避,在黑窗口里面输入内容时利用拼接语句可以对数据进行攻击 如:输入Code值 p001' union select * from Info where '1'='1 //这样可 ...
- ADO知识的运用二(Day 28)
可能是最近有些沉迷于电视剧了,所以,好多天都没写总结了.我知道这样不好,但又老管不住自己,也许是我自控力太差了吧......呵呵,如果在不写总结,可能以后就会成为习惯了.所以今天要赶紧补上...... ...
- ADO.NET基础学习 二(Command对象)
②command对象用来操作数据库.(三个重要的方法:ExecuteNonQuery(),ExecuteReader(),ExecuteScalar()) ⑴以update(改数据)为例,用到Exec ...
- Ado.Net基础拾遗二:插入,更新,删除数据
插入数据 public void InsertDataToSQL() { string conStr = ConfigurationManager.ConnectionStrings["No ...
- C# ado.net 操作存储过程(二)
调用存储过程 sql IF OBJECT_ID('RegionInsert') IS NULL EXEC (' -- -- Procedure which inserts a region recor ...
- 在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。
在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除. 作者:邵盛松 2009-09-05 前言 1关于的BLOB(Binary)数据的存储和读取功能主要参考了MSDN上的一篇& ...
- ADO.Net1
一.ADO.Net 数据库连接技术 二.查询 1.步骤: 1)使用数据库空间:using System.Data.SqlClient; 2)连接数据库 3)创建数据库操作命令 4)输入操作命令 5)开 ...
- 我与ADO.NET二三事(2)
继上篇开始,这里主要再次精简.因为大家已经熟悉了主要思想以及它的工作方式.那么这里提供的案例改动会很大.上篇的DatabaseCommand***均是为了大家能够轻松的理解所临时编写的.这次提供的接口 ...
- 【EF 2】浅谈ADO数据模型生成串(二):数据库连接串分析
导读:上篇博客中介绍了ADO生成串的前一部分,本篇博客结合报错,接着介绍剩下的部分. 一.代码展示 <span style="font-family:KaiTi_GB2312;font ...
随机推荐
- C++扬帆远航——1
问题及代码: /* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:test.cpp * 作者:常轩 * 完成日期:2 ...
- SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- JS基础入门篇(十二)—JSON和Math
1.JSON JSON: 对象格式的字符串 轻量的数据传输格式 注意事项: 键名 需要 使用 双引号 包起来 JOSN有两个方法:JSON.parse和 JSON.stringify. JSON.pa ...
- vue-cli脚手架目录(2.0)
vue-cli脚手架目录一览 最近在学习vue,看的稀里糊涂.今天从头开始,把cli配置的vue项目目录和配置文件搞清楚. 先看看整个项目目录结构: 再看看build文件夹下相关文件及目录: co ...
- 音频相关 ALSA ffmpeg ffplay 命令用法 g7xx
采样率: samples 441100 每秒 DAC/ADC 采样的频率,声卡一般还支持 48k 8k 等模式. 通道:channels 2声道 左右声道 也有单声道的声音,5.1 声道 位数: 16 ...
- MySQL中常用转换函数介绍
Cast函数:CONVERT函数. 用法:CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name). ...
- SIP压力测试——奇林软件kylinPET
一.Sip协议简介: SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定 ...
- vue之冒泡阻止
用了Element ui写页面 <el-dropdown-menu slot="dropdown"> <el-dropdown-item> <el-s ...
- 2019-2020-2 20174313张博 《网络对抗技术》Exp1 PC平台逆向破解
写在前面 ·实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一个代码片段——g ...
- Flask wtforms 表单验证使用
目录 wtforms 使用1(简单版): 使用2(复杂版): wtforms 安装:pip3 install wtforms 使用1(简单版): from flask import Flask, re ...