这个示例演示了如何构建一个到数据源的连接池.你可以通过连接池部署高性能的应用程序.本例中使用连接串创建连接池,并且由 SqlConnection 自动管理.   string connString; connString = "server=(local);Integrated Security=SSPI;database=northwind;" + "pooling=true;"; SqlConnection myConnection = new SqlConne…
转载请注明出处,谢谢~ http://blog.csdn.net/shootyou/archive/2011/05/12/6415248.aspx 在一次服务器异常的排查过程当中(服务器异常排查的过程我会另起文章),我们决定使用HttpClient4.X替代HttpClient3.X或者HttpConnection. 为什么使用HttpClient4?主要是HttpConnection没有连接池的概念,多少次请求就会建立多少个IO,在访问量巨大的情况下服务器的IO可能会耗尽. HttpClien…
这是一个已经移植到 .NET 的 ADO 应用的例子.也演示了单向.只读.快速 DataReader 的使用.它演示如何使用 DataView 类从 DataSet 获取一个 Table 和 操作一个类似于旧的 ADO 记录集模型.请记得,ADO 记录集仅仅包含一个 Table 的数据,但是 ADO.NET DataSet 可以包含多个 Tables 并且非常灵活.   原始的 ADO 示例使用 SQL Server 2000 下的 Employee 示例.原始的示例使用 ADO Records…
SqlDataReader 类提供了一种从数据源读取数据记录只进流的方法.如果想使用 OLE DB 接口的数据库或者 SQL Server7.0 之前的版本,请参考文章:使用 OLE DB 检索数据.   SqlCommand 调用 ExecuteReader 方法创建 SqlDataReader,不通过直接使用构造器创建.当 SqlDataReader 正在使用时,关联的 SqlConnection 处于对 SqlDataReader 服务挂起状态 .在这个状态下,除非关闭 SqlConnec…
OleDbDataReader 类提供了一种从数据源读取数据记录只进流的方法.如果想使用 SQL Server 7.0 或者更高版本,请参考文章:使用 SQL Server 检索数据.   OleDbCommand 调用 ExecuteReader 方法创建 OleDbReader,不通过直接使用构造器创建.当 OleDbDataReader 正在使用时,关联的 OleDbConnection 处于对 OleDbDataReader 服务挂起状态 .在这个状态下,除非关闭 OleDbConnec…
数据库事务用于控制数据提交到数据库.例如,在标准的账户程序,账户的借贷必须同时完成.由于电脑偶尔发生故障(电力中断.网络中断,等等),可能有些记录被更新或者添加,但是另外一些没有.为了避免这些情况,可以使用事务.ADO.NET 中的事务和 ADO 一样,是在数据库级别处理:即数据库必须支持事务.   针对事务有三个基本命令:BeginTransaction.Commit.和 Rollback.BeginTransaction 标识着事务的开始.任何发生在 BeginTransaction 和下个…
Commands发出针对数据库的数据存储动作.例如,你可以执行一条命令插入或者删除数据.获取更多从数据库移动数据相关的信息,请参考“Update a Database from a DataSet”.Commands包含了对数据库发出的若干命令,而且在OleDbCommand情况下, 可以进行特定的数据存储. 例如,你可以执行存储过程调用的命令,又或许是一个“set quoted_identifier on”的命令.无论是何种命令,OleDbCommand还是SqlCommand可以被用于获取命…
ADO.NET 概述 ADO.NET是改进的ADO数据访问模型用于开发可扩展应用程序.他是专门为可伸缩性.无状态和XML核心的web而设计的.   ADO.NET使用一些ADO对象,如Connection和Command对象,也引入了一些新对象.关键的新对象包括DataSet,DataReader,和DataAdapter.   这种改进的ADO.NET和之前的数据架构的重要区别在于存在一个对象--DataSet对象--这是独立的不同于任何的数据存储.正因为如此,DataSet功能能够作为独立的…
本文演示如何使用2种不同的方法从 SQL Server 生成 XML.   方法1:使用了 SqlCommand 的 ExecuteXmlReader 方法获取 XmlReader,然后使用 DataSet 类的 ReadXml 方法把 XmlReader 填充到 DataSet.   方法2:使用 SqlDataAdapter 提取数据内容,并使其适应 DataSet 内部的XML 结构.SqlDataAdapter 类封装了一组数据指令和一个数据连接,用于填充 DataSet .   示例1…
除了 Try/Catch 和 Exceptions 以外,新的 ADO.NET 数据框架也允许在 DataSet 的每行数据添加错误信息.如果 Updates 或者其他操作失败,SqlDataAdapters 为 Rows 附加上错误信息.此外,你可以过滤错误行呈现给用户,或者把它传递给错误处理函数.   即使用 XML 或者 XML Web Services 传输,Errors 仍然伴随 DataSet. 你可以使用 RowError 属性为 DataSet 的 DataRow 设置错误信息.…
ADO.NET 和 DataSet 可以读写 XML Schema 和 XML.获取更多信息,请参考 How do I...Use XML and the DataSet?   DataSet 的 Schemas,或者 tables.columns.constraints 等等,可以用几种方式定义.一种方法是利用特性和方法创建他们(Tables.Add.Columns.Add.等等).在 DataSet 内部建立了一个 Schema,可以作为容器保存数据.另一种方法是使用 SqlDataAdap…
我们有很多方法来过滤数据.一种是在数据库命令级别,利用 where 子句查询过滤数据.另一种是在数据填充到 DataSet 以后过滤数据.本篇讨论后者.   一旦数据填充到 DataSet,你可以使用 DataSet 的方法获取一个数据子集.   1.使用 Select 方法过滤 设想一下 DataSet 填充了 Customers 和 Orders 两个表.你可以使用 Select  方法返回一组行,为名叫 Kelly 的 Customers 过滤数据.   myRowArray = dsCu…
DataSet 可以包含非关联表,也可以包含关联表.你可以把 DataSet 想象成一个文档数据.事实上,除了 DataSet 是基于层级模型的,其它和 XML 数据文档是一样的.由于数据通常存储在关系数据库,DataSet 可以同时处理层级型关系和主键/外键型关系. Relationships 也有不同的执行方式.默认情况下,Deletes 和 Updates 是级联型的:假如删除一个 Customer 行,关联的 Orders 行也会被删除:假如更改一个 Customer  行的主键,关联的…
该主题说明了如何使用 DataSet 在数据库中更新数据.你依然可以直接使用 SqlCommand 在数据库中插入.更新.和删除数据,记住这一点也很重要.理解“从数据库填充DataSet”涵盖的概念有助于你理解这个主题.     前一篇“从数据库填充 DataSet”涵盖的部分主题包括从数据库检索数据和填充到 DataSet,以及 DataSet 怎样有别于数据库.一旦 DataSet 被加载,你可以修改数据,并且DataSet 会跟踪变化.     DataSet 可以被认为是从数据库检索出的…
从数据库获取数据很容易,处理数据更容易.如果想要从数据库获取只进.只读的数据流结果集,你可以使用 DataReader 执行命令并且检索它.关于如何使用 DataReader,请参考:使用 OLE DB 检索数据.使用 SQL Server 检索数据.更多关于绑定.浏览.或者远程处理数据查询结果集的操作,你可以如下例所示把结果集放到 DataSet 里.   请记住最重的是,DataSet 是一种独立的有别于数据存储的数据结构.尽管示例从数据库获取数据,但是数据来源是无所谓的:DataSet 总…
一些存储过程通过参数返回值.当参数在SQL表达式或者存储过程中被定义为“输出”,参数值会返回给调用者.返回值存储在 OleDbCommand 或者 SqlCommand 对象的参数集合的参数里.   和下面的示例不同,即使 Connection 和 Command 都没有指定,你仍然可以建立参数,但是你必须创建参数集合和预期类型.     workParam = myCommand.Parameters.Add(); workParam.Value = "CUSTID"; 下面的示例演…
池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所说的池是一种广义上的池,比如数据库连接池.线程池.内存池.对象池等.其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象.需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用.其他几种池的设计思想也是如此,池技术的优势是,可以消除对象创建所带来的延迟,从而提高系统的性能. 要了解Java连接池我们先要了解数据库连接池(…
转自: http://blog.csdn.net/shootyou/article/details/6615051 今天解决了一个HttpClient的异常,汗啊,一个HttpClient使用稍有不慎都会是毁灭级别的啊. 这里有之前因为route配置不当导致服务器异常的一个处理:http://blog.csdn.net/shootyou/article/details/6415248 里面的HttpConnectionManager实现就是我在这里使用的实现. 问题表现: tomcat后台日志发…
BoneCP 是一个开源的快速的 JDBC 连接池.BoneCP很小,只有四十几K(运行时需要log4j和Google Collections的支持,这二者加起来就不小了),而相比之下C3P0 要六百多K.另外个人觉得 BoneCP 有个缺点是,JDBC驱动的加载是在连接池之外的,这样在一些应用服务器的配置上就不够灵活. Bonecp是一个快速的,免费的,开放源代码的java数据库连接池资源库. BoneCPConfig类可以用来手动设置连接池及其属性, Class.forName("org.h…
原由:许多用户可能在查询相同的数据库以获取相同的数据.在这些情况下,可以通过使应用程序共享到数据源的连接来提高应用程序的性能.否则,让每个用户打开和关闭单独的连接的开销会对应用程序性能产生不利影响.这样就有了连接池. 实现: C#在连接字符串中设置连接池. 如果使用的是 OleDbConnection.OdbcConnection 或 OracleConnection 类,则连接池将由提供程序自动处理,所以您不必自己进行管理. 如果使用的是 SqlConnection 类,则连接池被隐式管理,但…
https://www.cnblogs.com/linjian/p/4831088.html 池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所说的池是一种广义上的池,比如数据库连接池.线程池.内存池.对象池等.其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象.需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用.其他几种池的设计思想也是如此,池技术的优势是,可以…
池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所说的池是一种广义上的池,比如数据库连接池.线程池.内存池.对象池等.其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象.需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用.其他几种池的设计思想也是如此,池技术的优势是,可以消除对象创建所带来的延迟,从而提高系统的性能. 要了解Java连接池我们先要了解数据库连接池(…
转载自51CTO http://developer.51cto.com/art/201006/207768.htm 51CTO曾经为我们简单的介绍过Java连接池.要了解Java连接池我们先要了解数据库连接池(connection pool)的原理,Java连接池正是数据库连接池在Java上的应用.--我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool).该模式正是为了解决资源的频繁分配﹑释放所造成的问题.为解决上述问题,可以采用数据库连接池技术.数据库连接池的基…
长话短说 上个月公司上线了一个物联网数据科学项目,我主要负责前端接受物联网事件,并提供 参数下载. webapp 部署在Azure云上,参数使用Azure SQL Server存储. 最近从灰度测试转向全量部署之后,日志时常收到: SQL Session会话超限的报错. // :: [Error].[Microsoft.EntityFrameworkCore.Query].[][0HLS3MS83SC3K:].[http://localhost/api/v1/soc-prediction-mod…
为什么要使用连接池,这些基本也不用说那么多 以下为快速入门案例 包目录结构 配置文件c3p0-config.xml <c3p0-config> <!-- 默认配置,如果没有指定自己的,则使用这个配置 --> <default-config> <property name="checkoutTimeout">30000</property> <property name="idleConnectionTestPe…
JdbcTemplate的使用 Spring为了各种支持的持久化技术,都提供了简单操作的模版和回调. JdbcTemplate 简化 JDBC 操作HibernateTemplate 简化 Hibernate 操作 下面列出几种熟悉的…
什么是连接池? 正常情况下,每次访问数据库都会打开和关闭,中断物理连接后需要再次进行物理连接.这样操作会浪费资源 使用连接池,主要的区别在于,不需要中断物理连接,即每次中断请求时spid还是存在! 原理:不物理中断连接如何清理连接信息? 连接池会将上次使用的资源,通过回收机制进行连接信息清理的. 例如:当Ado.net中调用了Connection.Close()时,SQL Server通过exec sp_reset_connection来清除上次的连接信息 该sp工作内容如下: 关闭游标 清除临…
相关知识: 连接池的意义: 应用程序往往涉及大量的,并发的数据访问操作 数据库服务器能够同时维系的连接数量非常有限.如果某个数据库访问操作不及时关闭连接,就会减少其他调用对数据库访问的机会.因此,一般需要尽可能晚的打开连接,尽可能早的关闭连接 反复的创建和销毁连接对象,或者反复的打开和关闭实际的连接(从应用程序到数据库服务器,可能跨网络),其开销是比较大的,也是不划算的 采用连接池,在池中缓存若干个链接对象.如果有调用需要使用连接,则从池中取出一个:调用完成后,并不销毁连接,而是将连接放回池中,…
用习惯了ADO.NET的方式去访问数据库,虽然ADO.NET写的代码没有EF简洁,可是也并不麻烦.而且EF在进行多表查询的那种方式是,EF需要先去数据库里定义外键,再进去一次代码生成,然后才能用INCLUDE方法进行多表关联查询.我不太喜欢那样,还不如老老实实写做SQL语句. 所以ADO.NET 不能完成不用掉.那么怎么将EF和ADO.NET结合. 其实很简单,只要将EF的连接池返回成ADO.NET的SQLCONNECTION.然后就可以用ADO.NET的方式来写了. protected voi…
最近的一个项目中,由于界面查询的数据量比较大,关联的表比较多,有些数据查出来需要临时保存起来供后面的查询使用,于是想到了用oracle的临时表来实现这个需求.大家都知道,oracle的临时表有两种:事务级别临时表和会话级别临时表,我这里使用的是会话级别的临时表.当时把功能时候后就以为万事大吉了,没想到就在这里买下了一个坑.       坑的浮现:之后在为系统加调试日志时偶然发现了临时表的数据没有像oracle临时表的定义那样“不同会话独享临时表,临时表的数据在会话结束后被自动清空”.首先看第一次…