ADO.NET 拾遗
一、SqlDataReader和SqlDataAdapter性能对比
Stopwatch sw = new Stopwatch();
sw.Start();
using(SqlConnection cnn = new SqlConnection(@"Data Source=RuyeeSoft\SqlExpress;user id=sa;password=123;Initial catalog=NorthWind"))
{
SqlCommand cmd = cnn.CreateCommand();
cmd.CommandText = "select top(2000000) * from student";
cnn.Open();
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
DataTable auto = new DataTable("Auto");
DataColumn vin = new DataColumn("ID");
vin.DataType = typeof(int);
vin.Unique = true;
vin.AllowDBNull = false;
vin.Caption = "ID";
auto.Columns.Add(vin);
DataColumn Name = new DataColumn("Name");
Name.DataType = typeof(string);
Name.MaxLength = ;
//Name.Unique = true;
Name.AllowDBNull = false;
Name.Caption = "Name";
auto.Columns.Add(Name);
DataColumn score = new DataColumn("score");
score.DataType = typeof(int);
//score.Unique = true;
score.AllowDBNull = false;
score.Caption = "score";
auto.Columns.Add(score);
while (rdr.Read())
{
DataRow newAuto = auto.NewRow();
newAuto[);
newAuto[);
newAuto[);
auto.Rows.Add(newAuto);
}
}
sw.Stop();
Console.WriteLine("1总运行时间:" + sw.Elapsed);
sw.Start();
using (SqlConnection cnn = new SqlConnection(@"Data Source=ruyeesoft\SqlExpress;user id=sa;password=123;Initial catalog=NorthWind"))
{
SqlCommand cmd = cnn.CreateCommand();
cmd.CommandText = "select top(2000000) * from student";
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
cnn.Open();
sda.Fill(dt);
}
sw.Stop();
Console.WriteLine("2总运行时间:" + sw.Elapsed);
对比结果
100万条数据的效果
1总运行时间:00:00:11.3748084
2总运行时间:00:00:18.0405345
200万条数据的效果
1总运行时间:00:00:24.1619173
2总运行时间:00:00:37.6120735
二、使用非连接数据
1、关于并发:
由于不同的客户端拿到了相同版本的副本,修改后都要讲结果保存到数据库中,这时出现了以哪个修改后的副本为最新版本的决策冲突问题。
2、解决并发冲突:
a、时间优先:第一次更新优先。
b、时间优先:最后一次更新优先。
c、角色优先:看获取副本的客户端的权限级别,谁级别高以谁为准。
d、位置优先:如总部优先与分店。
e、用户解决冲突:提供一个解决冲突界面,让用户选择数据的版本。如tfs的版本冲突解决策略。
3、应该加载什么离线数据
a、数据选择:应该只加载用户需要处理的数据,而不是加载整个数据库。
b、数据量:数量量的大小会影响加载的时间、更新的时间和客户的内存需求量。
c、分割数据:根据业务的使用目的,最好将数据分割成多个部分,并分别存入相应的DataSet对象中。不能在不同的DataSet对象的DataTable对象之间建立外键约束。
4、为了更好的使用离线数据,请使用GUID作为数据库的主键。
ADO.NET 拾遗的更多相关文章
- .NET基础拾遗(6)ADO.NET与数据库开发基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...
- .NET基础拾遗(8)ADO.NET与数据库开发基础
1.1 ADO.NET支持哪几种数据源? ① System.Data.SqlClient .NET程序员最常用的了.通过OLEDB或者ODBC都可以访问,但是SqlClient下的组件直接针对MSSQ ...
- Ado.Net基础拾遗二:插入,更新,删除数据
插入数据 public void InsertDataToSQL() { string conStr = ConfigurationManager.ConnectionStrings["No ...
- Ado.Net基础拾遗一:读取数据
从数据库中读取数据: 使用DataReader对象从数据库中读取数据 首先需要添加几个命名空间 //需要添加的命名空间 using System.Configuration; using System ...
- .NET基础拾遗(5)多线程开发基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...
- ADO.NET对象的详解
1. Connection 类 和数据库交互,必须连接它.连接帮助指明数据库服务器.数据库名字.用户名.密码,和连接数据库所需要的其它参数.Connection对象会被Command对象使用,这样就能 ...
- WebForm获取GET或者POST参数到实体的转换,ADO.NET数据集自动转换实体
最近在修改维护以前的webform项目(维护别人开发的.....)整个aspx没有用到任何的控件,这个我也比较喜欢不用控件所以在提交信息的时候需要自己手动的去Request.QueryString[] ...
- ADO.NET编程之美----数据访问方式(面向连接与面向无连接)
最近,在学习ADO.NET时,其中提到了数据访问方式:面向连接与面向无连接.于是,百度了一下,发现并没有很好的资料,然而,在学校图书馆中发现一本好书(<ASP.NET MVC5 网站开发之美&g ...
- ADO.NET一小记-select top 参数问题
异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html 最近使用ADO.NET的时候,发现select top @count xxxx 不 ...
随机推荐
- java 函数 运算符
1. 函数的重载:多个函数名相同,根据参数列表(个数,类型)选择执行不同函数,不能按返回值类型区分. 2. 运算符: / /两头都是int类型 则做求商运算,如果一头有小数就做正常的除运算 5/2 / ...
- Day07_面向对象第二天
1.构造方法(掌握) 1.构造方法的特点(掌握) A.方法名必须和类名保持一致 B.没有返回值类型并且没有具体的返回值 2.构造方法的作用(掌握) 给对象的属性初始 ...
- 初始C++ 模板元
两篇比较好的博客,暂时还没不怎么理解! http://www.cnblogs.com/salomon/archive/2012/06/04/2534787.htmlhttp://www.cnblogs ...
- mark资料-python编辑器的选择与安装
1.pycharm 下载地址: 注册码: 注意事项: 2.ulipad参考虫师的地址 url: 3.eclipse+pydev
- Java 最简单的计算器——使用Args参数
public class Test{ public static void main(String[] args){ if(args.length<3){ System.out.println( ...
- UVa 11039 - Building designing
题目大意:n个绝对值各不相同的非0整数,选出尽量多的数,排成一个序列,使得正负号交替且绝对值递增. 分析:按照绝对值大小排一次序,然后扫描一次,顺便做个标记即可. #include<cstdio ...
- 2016 ACM/ICPC Asia Regional Shenyang Online 1007/HDU 5898 数位dp
odd-even number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- POJ 3268 Silver Cow Party (双向dijkstra)
题目链接:http://poj.org/problem?id=3268 Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total ...
- ZOJ 1243 URLs
/*In the early nineties, the World Wide Web (WWW) was invented. Nowadays, most people think that the ...
- install usb serial
Install driver for USB-UART bridge converter on Linux Ubuntu12.04 Ubuntu下USB转串口芯片驱动程序安装,支持cp210x,pl2 ...