- 浏览: 2173911 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1878)
- [网站分类]ASP.NET (141)
- [网站分类]C# (80)
- [随笔分类]NET知识库 (80)
- [随笔分类]摘抄文字[非技术] (3)
- [随笔分类]养生保健 (4)
- [网站分类]读书区 (16)
- [随笔分类]赚钱 (7)
- [网站分类].NET新手区 (233)
- [随笔分类]网站 (75)
- [网站分类]企业信息化其他 (4)
- [网站分类]首页候选区 (34)
- [网站分类]转载区 (12)
- [网站分类]SQL Server (16)
- [网站分类]程序人生 (7)
- [网站分类]WinForm (2)
- [随笔分类]错误集 (12)
- [网站分类]JavaScript (3)
- [随笔分类]小说九鼎记 (69)
- [随笔分类]技术文章 (15)
- [网站分类]求职面试 (3)
- [网站分类]其他技术区 (6)
- [网站分类]非技术区 (10)
- [发布至博客园首页] (5)
- [网站分类]jQuery (6)
- [网站分类].NET精华区 (6)
- [网站分类]Html/Css (10)
- [随笔分类]加速及SEO (10)
- [网站分类]Google开发 (4)
- [随笔分类]旅游备注 (2)
- [网站分类]架构设计 (3)
- [网站分类]Linux (23)
- [随笔分类]重要注册 (3)
- [随笔分类]Linux+PHP (10)
- [网站分类]PHP (11)
- [网站分类]VS2010 (2)
- [网站分类]CLR (1)
- [网站分类]C++ (1)
- [网站分类]ASP.NET MVC (2)
- [网站分类]项目与团队管理 (1)
- [随笔分类]个人总结 (1)
- [随笔分类]问题集 (3)
- [网站分类]代码与软件发布 (1)
- [网站分类]Android开发 (1)
- [网站分类]MySQL (1)
- [网站分类]开源研究 (6)
- ddd (0)
- 好久没写blog了 (0)
- sqlserver (2)
最新评论
-
JamesLiuX:
博主,能组个队么,我是Freelancer新手。
Freelancer.com(原GAF – GetAFreelancer)帐户里的钱如何取出? -
yw10260609:
我认为在混淆前,最好把相关代码备份一下比较好,不然项目完成后, ...
DotFuscator 小记 -
日月葬花魂:
大哥 能 加我个QQ 交流一下嘛 ?51264722 我Q ...
web应用程序和Web网站区别 -
iaimg:
我想问下嵌入delphi写的程序总是出现窗体后面感觉有个主窗体 ...
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部 -
iaimg:
代码地址下不了啊!
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
首先是我所作的B/S软件需要多种数据库的支持,其中就包括Access数据库。而为了达到快的速度,必须把access的连接放入数据库连接池,所以我专门给access做了个数据库连接池。
问题出现了:“就是用access连接池的时候,有的时候会出现修改过的数据不能及时的反应到界面上来。”
刚开始我以为是我的access连接池写的有问题,于是是大找特找就是找不到原因,后来我干脆不用池,直接自己new一个全局连接放在静态变量里看一下会不会有问题,结果显示完全没有问题。
接着我又new 了两个连接放在静态变量里 conn1 和 conn2 , 然后让conn1做了一个update数据操作,conn2又立马获取update的值,结果显示 获取的数据还是update前的数据, 然后过3到5秒 再让conn2去获取update的值 才能看到已经修改了。
于是我得出这样的结论,access数据库的多个连接情况下,其中某一个连接进行了修改操作需要过3到4秒才能反映到其他连接里来
如果这个结论被确定那就是说 access无法实现 传统上的 数据库连接池。
于是我想会不会是我的数据库操作代码有问题,于是我干脆用两台电脑做测试,分别在两台电脑上用office打开同一个access数据库,然后在其中一台上修改了某个数据,另外一台上立马打开改数据,结果显示 数据还是没有更新。 靠。从目前来看我上面的结论是符合实际的。
如果真的这个结论被坐实的话,就像我上面说的,“access无法实现 传统上的 数据库连接池”。那麻烦就大了,因为其他数据库连接池,如:sqlserver,是可以用的,而access不能用,那么可能需要更多的代码区分开来编写。
于是我又想,会不会是使用access连接的时候有没有什么特殊的属性(或者说方式),才能保证多个access连接能及时的反应信息。
这里付上操作数据库的代码:
说明:test.mdb中一个表,test 表,中间有两个自段id 和 num 都是数字。记录就一条 id=1 num=1
protected void LinkButton11_Click(object sender, EventArgs e)
{
String connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("/test.mdb") + ";Persist Security Info=True;";
String selectSql = "select [num] from [test] where [id]=1";
String updateSql = "Update [test] set [num]=[num]+1 where [id]=1";
OleDbConnection connForUpdate = new OleDbConnection(connStr);
OleDbConnection connForSelect = new OleDbConnection(connStr);
OleDbCommand cmd;
Object resultValue;
try
{
connForUpdate.Open();
connForSelect.Open();
//修改前提取
cmd = new OleDbCommand(selectSql, connForSelect);
resultValue = cmd.ExecuteScalar();
Response.Write("修改前:" + resultValue);
Response.Write("<br/>");
resultValue = null;
//执行修改
cmd = new OleDbCommand(updateSql, connForUpdate);
cmd.ExecuteNonQuery();
//修改后提取
cmd = new OleDbCommand(selectSql, connForSelect);
resultValue = cmd.ExecuteScalar();
Response.Write("修改后:" + resultValue);
}
finally
{
connForSelect.Close();
connForUpdate.Close();
}
}
此代码的结果是:
修改前:6
修改后:6
最终结论是,Access确实不能很好的实现连接池。 没法子,只能是变相的解决问题了。
我这里给出Access操作的几个可以提高速度方法:
1.让某些只是提取操作的单步业务使用同一个链接, 该连接因为都是单步提取数据,所以“不是即时性”的数据问题不大,如:获取点击数、查询等等都使用同一个连接,此conn保持状态不要关闭。
2.如果是非单步的业务就要使用完了连接及时关闭,不然会出现看不到刚刚更新过的数据,如:新增一条记录,新增完后要显示此记录的结果,由于是两张页面所以保证第一张页面的conn关闭了,第二张页面new出来,就没有问题。
3.这里可以思考这样的连接池,在conn返回到连接池的时候会把conn和session绑定起来,在需要获取一个连接的时候,先要判断所有和session绑定的conn,绑定时间在5秒前的就取消绑定,并把连接放回到freelist列表里,然后是根据传进来sessionID,如果在和session绑定的conn集合中能够找到相同的id那么就再次使用这个conn。如此这般便也可以算是一个连接池。
发表评论
-
UML
2010-08-09 11:39 1311开放分类:计算机技术计算机术语计算机科学 收藏分享到顶[6] ... -
用WebService实现调用新浪的天气预报功能
2010-07-15 21:47 2983用WebService实现调用新 ... -
Cookie简介及JSP处理Cookie的方法
2010-07-29 09:28 978Cookie简介及JSP处理Cookie的方法 一.什么是 ... -
SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径修改方法
2010-06-09 22:16 1264一直想把数据库的默认 ... -
C#Winform调用网页中的JS方法
2010-07-12 11:07 2241其实还是还是相当的简单,本文将详细的用代码来展示一下如何调用, ... -
用WebService实现调用新浪的天气预报功能
2010-07-15 21:47 1514用WebService实现调用新 ... -
SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径修改方法
2010-06-09 22:16 1095一直想把数据库的默认 ... -
基于 VS 2010 阐述C# 4个特性
2010-05-28 09:26 1089基于 VS 2010 阐述C# 4个特性基于 VS 20 ... -
Google AdSense中文官方博客今天公布了AdSense内容广告与AdSense搜索广告的收入分成比例
2010-05-25 09:12 1147google adsense 的广告分成比例总算是公布出来了。 ... -
权限管理数据表设计说明
2010-05-21 15:19 1091权限管理数据表设计说明 B/S系统中的权限比C/S中的更显的 ... -
权限管理的设计方法
2010-05-20 09:26 1437权限管理的设计方法是 ... -
多表分页存储过程
2010-05-17 14:25 1067分页存储过程 在网站设计,网页开发中,是要被经常遇到的。 ... -
vs2010跟vs2008比较增加了哪些功能
2010-05-18 09:10 2260随着vs2010的发布,新的 ... -
COM域名难逃实名监管 CN域名简化流程抢用户
2010-05-13 09:22 1200互联网实名制的落实第 ... -
网站安全之XSS漏洞攻击以及防范措施
2010-04-29 08:59 1445在网站开发中,安全问题是重中之重的问题,特别像一个sql注入, ... -
深入了解ASP.NET运行内幕
2010-04-28 09:04 1179做事情要知道根本所在 ... -
WebBrowser中显示乱码
2010-04-22 09:09 1752最近在开发cs项目的时候,因为嵌套了一个网页,要用到we ... -
vps配置笔记(10)架设svn服务
2010-04-21 09:41 1283linux 下面架设svn服务器,有点难度,我找了好多资料,现 ... -
IEnumerable
2010-04-16 09:12 1281在平常的代码编写中,虽然不常用到Ienumerable 但却不 ... -
JS代码实例:实现随机加载不同的CSS样式
2010-04-19 13:38 1429如果让网页浏览者每次打开页面都有新的感觉,可以通过替换css样 ...
相关推荐
对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。 在较为完备的数据库连接池实现中,可根据...
数据库连接池是数据库管理中的重要概念,特别是在高并发和大数据量的应用场景下,它能显著提升性能并降低系统资源消耗。在C#编程环境中,我们可以使用自定义的数据库连接池来实现这一功能。本篇文章将深入探讨“C#...
数据库连接池是数据库管理中的一个重要概念,它在C#编程中扮演着优化数据库操作的关键角色。C#数据库连接池是一种管理数据库连接的技术,通过复用已存在的连接而不是每次请求时都创建新的连接,从而提高数据库操作的...
数据库连接池是现代应用程序开发中的重要组成部分,尤其是在处理大量数据交互的应用中,它极大地提高了数据库操作的效率和系统的稳定性。本资源"03-数据库连接池驱动"包含了三种常用的数据库连接池驱动:C3P0、Druid...
数据库连接池(connection pool)的工作原理是为了解决资源的频繁分配、释放所造成的问题。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时...
本资源集合了常用的JDBC数据库连接jar包,以及一些知名的数据库连接池实现,如dbcp和c3p0,这对于开发人员来说是非常宝贵的资源。 首先,让我们了解一下JDBC。JDBC提供了一套标准的API,包括接口和类,使得开发者...
本文将深入探讨如何在C#中使用MySQL数据库连接池。 首先,我们需要了解什么是数据库连接池。数据库连接池是一种资源管理技术,它预先创建并维护一定数量的数据库连接,当应用需要时,可以从池中获取连接,使用完毕...
* 数据库连接池特点: * 获取连接时不需要了解连接的名字,连接池内部维护连接的名字 * 支持多线程,保证获取到的连接一定是没有被其他线程正在使用 * 按需创建连接,可以创建多个连接,可以控制连接的数量 * 连接...
context.xml, 数据库连接池配置文
本资源“jsp中文帮助”提供了关于JSP的中文指导,特别关注了数据库连接池的问题,这对于理解和解决实际开发中的问题非常有帮助。 数据库连接池是管理数据库连接的一种机制,它能够有效地提高系统性能和资源利用率。...
数据库连接池是数据库管理系统中的一个重要概念,主要用于优化数据库的连接操作。在C#编程中,数据库连接池可以高效地管理数据库连接,避免频繁创建和销毁连接导致的性能开销。本文将详细介绍C#中数据库连接池的工作...
数据库连接池是现代应用程序中管理数据库连接的一种高效方式,它能显著提高系统性能,减少资源消耗。在给定的标题“配置数据库连接池”中,我们可以深入探讨数据库连接池的概念、工作原理,以及如何配置Oracle9i和...
Java数据库连接池是Java开发中一个非常重要的技术,它主要用于管理数据库连接,提高数据库操作的效率和性能。在Java应用程序中,频繁地创建和关闭数据库连接会导致大量的系统资源浪费,而连接池则可以复用已建立的...
数据库连接池在Java中的实现是提高应用程序性能的关键技术之一,它通过复用已存在的数据库连接,避免了频繁创建和销毁连接导致的系统资源浪费。本文将深入探讨如何使用Java代码来实现一个简单的数据库连接池,并解释...
Delphi数据库连接池是一种高效的数据库资源管理技术,它允许应用程序在多用户环境下共享数据库连接,以提高性能并减少系统资源的消耗。连接池的核心思想是重用已建立的数据库连接,而不是每次需要时都创建新的连接,...
达梦7数据库连接池,jdbcDriver,达梦7数据库连接池,jdbcDriver,达梦7数据库连接池,jdbcDriver,达梦7数据库连接池,jdbcDriver,达梦7数据库连接池,jdbcDriver,达梦7数据库连接池,jdbcDriver,
在Delphi这个强大的Windows应用程序开发环境中,实现数据库连接池能够有效地解决频繁创建和销毁数据库连接带来的性能问题。下面我们将详细探讨如何在Delphi中实现数据库连接池,以及其核心概念和优势。 数据库连接...