sql中数据库连接与断开式连接有什么区别?
连接式指的是对数据的操作在 conn.Open() 与 conn.Close()之间;
断开式连接指的是 conn.Open()打开连接之后,先将数据放入adapter中,然后关闭连接(conn.Close()),接着利用adapter对数据进行操作。
连接式:
sqlConn.Open();
SqlDataReader dr=sqlComm.ExcuteReader();
while(dr.Read())
{
for (int i=0; i<dr.FieldCount; i++)
{
Console.Write(dr.GetValue(i).ToString()+" ");
}
Console.WriteLine();
}
dr.Close();
sqlConn.Close(); 断开式:
sqlConn.Open();
DataSet ds=new DataSet();
adapter.Fill(ds);
sqlConn.Close();
//处理数据在打开和关闭之后
for (int i=0; i<ds.Tables[0].Rows.Count; i++)
{
for (int j=0; j<ds.Tables[0].Columns.Count; j++
{
Console.Write(ds.Tables[0].Rows[i][j]+" ");
}
Console.WriteLine(); }
它们各有什么优点和缺点
断开式的主要优点就是:
一次连接取得数据之后,即可断开,在用户非常多的情况下,不会占用太多的连接池资源。
还有一点,就是一次性的从数据库中取得了数据之后,这些数据是存在内存中的,而不会再去操作数据库,所以你对
这些数据做任何的操作,都只是修改内存,不会改变数据库中的内容。缺点就是:刚才提到了,这种方式是把数据一
次性的读到内存中的,所以在数据量大的时候会非常消耗内存。
非断开式的优点:
因为非断开式使用DataReader,每次只在内存中加载一条数据,所以占用的内存是很小的。由于
DataReader的特殊性和高性能,所以DataReader是只进的,你读了第一条后就不能再去读取第一条了。 缺点就是
:需要你去维护建立起来的这个数据库连接,所以如果用户访问量大时,有可能导致连接池异常。
sql中数据库连接与断开式连接有什么区别?的更多相关文章
- SQL中varchar和nvarchar的基本介绍及其区别
SQL中varchar和nvarchar的基本介绍及其区别 varchar(n) 长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储 ...
- C#中SQL Server数据库连接池使用及连接字符串部分关键字使用说明
(1) 数据库的连接使用后,必须采用close()连接等效的方法关闭连接.只有关闭后,连接才能进入连接池. 参见微软的使用连接池说明:https://msdn.microsoft.com/zh-cn/ ...
- SQL 中不同类型的表连接
http://www.linuxidc.com/Linux/2012-08/68035.htm 1.简介 在关系型数据库中,join操作是将不同的表中的数据联合在一起时非常通用的一种做法.首先让我们看 ...
- SQL中查询现有未释放连接
SELECT dbid,count() FROM [Master].[dbo].[SYSPROCESSES] WHERE spid> and status='sleeping' group by ...
- SQL学习笔记之SQL中INNER、LEFT、RIGHT JOIN的区别和用法详解
0x00 建表准备 相信很多人在刚开始使用数据库的INNER JOIN.LEFT JOIN和RIGHT JOIN时,都不太能明确区分和正确使用这三种JOIN操作,本文通过一个简单的例子通俗易懂的讲解这 ...
- sql 中 并集union和union all的使用区别
union 操作符用于合并两个或多个 SELECT 语句的结果集,并且去除重复数据,按照数据库字段的顺序进行排序. 例 SELECT NAME FROM TABLE1UNIONSELECT EMP_ ...
- sql中别名加as和不加as的区别
select UserName as 用户名,PassWord as 密码 from user 与 select UserName 用户名,PassWord 密码 from user 中as用于不用的 ...
- SQL中 count(*)和count(1)的对比,区别
执行效果: 1. count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了! 从执行计划来看,count(1)和coun ...
- sql中的if()和ifnull() 的用法和区别
if() 把salary表中的女改成男,男改成女: update salary set sex = if( sex = '男','女','男'); if(true,a,b), if(false,a, ...
随机推荐
- javaee IO流作业02
package Zy; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.Fil ...
- python sqlalthemy 总结
orm 数据状态的预知识 瞬时状态:刚创建的对象还没有被Session持久化.缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID. 持久状态:对象经过Sessi ...
- idea中git回滚到指定分支
1.git - > show history,选中回滚的指定版本,右击copy revision number 粘出版本号 2.git -> reset hard 出险新页面之后,选中ha ...
- revit二次开发之族的类型参数与实例参数的转换
1背景小伙伴在做revit二次开发的时候,可能需要在族环境中将族的类型参数与实例参数相互转换. 2思路1.使用族管理器FamilyManager,参见注释12.首先获取需要转换的参数(单个与批量),参 ...
- c# 数组 字符串 C#中判断字符串中包含某个字符
string str = "1,2,3,4,5,6,7"; string[] strArray = str.Split(','); //字符串转数组 ...
- HDU 2415 Bribing FIPA
Bribing FIPA Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original I ...
- 网上有一种错误的做法是:因为每一个双连通分量内的点low[]值都是相同的,则dfs()时,对于一条边(u,v),只需low[u]=min(low[u],low[v]),这样就不用缩点,最后求度数的时候
- 【ACM】hdu_1106_排序_201308071928
排序Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissio ...
- [MGR——Mysql的组复制之单主模式 ]详细搭建部署过程
1,关于MySQL Group Replication 基于组的复制(Group-basedReplication)是一种被使用在容错系统中的技术.Replication-group(复制组)是由 ...
- Java&&(面试题)初始化顺序总结
1 无继承情况下的Java初始化顺序: class Sample { Sample(String s) { System.out.println(s) ...