广告
返回顶部
首页 > 资讯 > 精选 >C#数据库连接池的创建
  • 743
分享到

C#数据库连接池的创建

2023-06-18 00:06:29 743人浏览 薄情痞子
摘要

本篇内容主要讲解“C#数据库连接池的创建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#数据库连接池的创建”吧!使用C#数据库连接池连接到数据库服务器通常由几个需要软长时间的步骤组成。必须建立

本篇内容主要讲解“C#数据库连接池的创建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#数据库连接池的创建”吧!

使用C#数据库连接池

连接到数据库服务器通常由几个需要软长时间的步骤组成。必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次连接,必须分析连接字符串信息,必须由服务器对连接进行身份验证,等等。

实际上,大部份的应用程序都是使用一个或几个不同的连接配置。当应用程序的数据量和访问量大的时候,这意味着在运行应用程序的过程中,许多相同的连接将反复地被打开和关闭,从而会引起数据库服务器效率低下甚至引发程序崩溃。为了确保应用程序的稳定和降低性能成本,我们可以在ADO.net中使用称为连接池的优化方法来管理维护连接。

C#数据库连接池可以减少创建连接的次数。定义最小连接数(固定连接数),当用户在连接上调用Open,连接池就会检查池中是否有可用的连接。如果发现有连接可用,会将该连接返回给调用者,而不是创建新连接。应用程序在该连接上调用Close时,连接池会判断该连接是否在最小连接数之内,如果“是”会将连接回收到活动连接池中而不是真正关闭连接,否则将烧毁连接。连接返回到池中之后,即可在下一个Open调用中重复使用。

创建C#数据库连接池

以下示例使用C#连接sql数据库:

classDbConn  {  //usingSystem.Data;  //usingSystem.Data.SqlClient;  privateconstintMaxPool=10;//***连接数  privateconstintMinPool=5;//最小连接数  privateconstboolAsyn_Process=true;//设置异步访问数据库  privateconstboolMars=true;//在单个连接上得到和管理多个、仅向前引用和只读的结果集(ADO.NET2.0)  privateconstintConn_Timeout=15;//设置连接等待时间  privateconstintConn_Lifetime=15;//设置连接的生命周期  privatestrinGConnString="";//连接字符串  privateSqlConnectionSqlDrConn=null;//连接对象   publicDbConn()//构造函数  {  ConnString=GetConnString();  SqlDrConn=newSqlConnection(ConnString);  }   privatestringGetConnString()  {  return"server=localhost;" +"integratedsecurity=sspi;" +"database=pubs;" +"MaxPoolSize="+MaxPool+";" +"MinPoolSize="+MinPool+";" +"ConnectTimeout="+Conn_Timeout+";" +"ConnectionLifetime="+Conn_Lifetime+";" +"AsynchronousProcessing="+Asyn_Process+";";  //+"MultipleActiveResultSets="+Mars+";";  }   publicDataTableGetDataReader(stringStrSql)//数据查询  {  //当连接处于打开状态时关闭,然后再打开,避免有时候数据不能及时更新  if(SqlDrConn.State==ConnectionState.Open)  {  SqlDrConn.Close();  }  try {  SqlDrConn.Open();  SqlCommandSqlCmd=newSqlCommand(StrSql,SqlDrConn);  SqlDataReaderSqlDr=SqlCmd.ExecuteReader();  if(SqlDr.HasRows)  {  DataTabledt=newDataTable();  //读取SqlDataReader里的内容  dt.Load(SqlDr);  //关闭对象和连接  SqlDr.Close();  SqlDrConn.Close();  returndt;  }  returnnull;  }  catch(Exceptionex)  {  System.windows.FORMs.MessageBox.Show(ex.Message);  returnnull;  }  finally {  SqlDrConn.Close();  }  }  }

通过调用SqlDrConn.Open()方法打开连接,这时候连接池就会初始化并建立设定的最小连接数。想更清楚了解到连接池的状况可以通过SQL的查询分析器执行存储过程sp_Who,它会列出当前的数据库进程,查看loginname、dbname可以区分用户的连接信息,但要注意的是登录查询分析器本身会使用两个连接,所以***用另一个用户名登录查询分析器。使用此方法还有一个麻烦地方就是要经常按“执行查询”以更新进程信息。还有另一种方法个人认为较好的,通过控制面板→管理工具→性能,右击添加计算器,性能对象选择SQlServer:GeneralStatistics(常规统计)然后计算器选择UserConnections(用户连接)***按“添加”就可以实时查看当前连接数。

到了这里,连接池已经实现了,但问题往往会出现在运行过程中。如连接池的连接数满了该怎样处理?在这里我们应该合理设置连接字符串中的ConnectTimeout属性和ConnectionLifetime属性(上面有解释)延长等待时间,尽可能地在每次使用完连接之后调用Close方法关闭连接。但从中也有没法避免的,当连接数满了并且申请连接的时间超过设置连接等待的时间时,程序将会引发InvalidOperationExceptio异常,我们可以通过捕获此异常向用户界面提示“系统正忙,请稍后再连接……”之类的信息来缓解这种情况。此外,也有另一种方法来解决这种情况,就是利用ADO.NET2.0新特性“异步进程”,对数据库进行异步操作,确保连接能够及时调用Close方法关闭连接,这样能大大减少正在使用的连接数。

使用方法:在连接字符串中加上AsynchronousProcessing=true表示使用异步处理操作。

当应用程序不再需要用到连接池的时候可以使用ClearPool或ClearAllPools方法清空连接池也可作重置连接池使用,方法如下:

SqlConnection.ClearPool(SqlConnectionconnection)清空关联的连接池

SqlConnection.ClearAllPools()清空所有连接池

调用上述方法,如果连接正在使用,连接池会做相应标记,等连接关闭时自动烧毁。

小结C#数据库连接池

到此,相信大家对“C#数据库连接池的创建”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: C#数据库连接池的创建

本文链接: https://www.lsjlt.com/news/294885.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#数据库连接池的创建
    本篇内容主要讲解“C#数据库连接池的创建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#数据库连接池的创建”吧!使用C#数据库连接池连接到数据库服务器通常由几个需要软长时间的步骤组成。必须建立...
    99+
    2023-06-18
  • 怎么创建mysql数据库连接池
    在mysql中利用DBUtils创建数据库连接池的方法具体方法如下:import pymysqlfrom DBUtils.PooledDB import PooledDB, SharedDBConnectionPOOL = PooledDB...
    99+
    2022-10-05
  • Python 中创建 PostgreSQL 数据库连接池
    目录习惯于使用数据库之前都必须创建一个连接池,即使是单线程的应用,只要有多个方法中需用到数据库连接,建立一两个连接的也会考虑先池化他们。连接池的好处多多, 1) 如果反复创...
    99+
    2022-11-12
  • Python中怎么创建mysql数据库连接池
    这篇文章给大家介绍Python中怎么创建mysql数据库连接池,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。安装为顶层模块 如果你打算在除了Webware之外的程序中使用,推荐安装为顶层模块:python s...
    99+
    2023-06-17
  • 在Python数据库连接池中如何创建请求连接
    在Python数据库连接池中如何创建请求连接,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在Python数据库连接池中操作过程中如果你设置好了连接池,你就可以按...
    99+
    2023-06-17
  • 数据库连接池
    连接池是管理数据库连接的一种机制,能够控制连接的个数,默认情况下可以预先创建可用的连接。有四种常见的连接池框架1、Apache的DBCP连接池(Tomcat内置了DBCP)2、C3P0连接池3、proxco...
    99+
    2022-10-18
  • c#怎么用mysql数据库连接池
    c#用mysql数据库连接池的示例:class DbConn{private const int MaxPool=10;//最大连接数private const int MinPool=5;//最小连接数private const bool...
    99+
    2022-10-13
  • C++怎么实现数据库连接池
    本文小编为大家详细介绍“C++怎么实现数据库连接池”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++怎么实现数据库连接池”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。项目背景为了提高Mysql数据库的访问瓶颈...
    99+
    2023-07-05
  • Android studio 连接SQLite数据库 +创建数据库+创建数据库表
    Android studio 之数据库的使用 连接创建SQLite 大家好,欢迎来到寒依。 相信看啦我的教程 当老师问你在学习Android studio 数据库使用过程中遇到什么困难,分享一下你的感...
    99+
    2023-10-01
    android studio intellij-idea 数据库开发 sqlite java
  • DBUtils数据库连接池
    使用数据库连接池技术,可以重复使用多个数据库连接,避免每次执行数据库操作都建立连接和关闭连接,也避免了大型应用同时占用多个数据库连接。 以连接mysql为例 import pymysql from DBUtils.PooledDB i...
    99+
    2023-01-31
    数据库 连接池 DBUtils
  • Nodejs使用连接池连接数据库
    创建OptPool.jsvar mysql = require('mysql');function OptPool(){this.flag = true;this.pool = mysql....
    99+
    2022-10-18
  • 怎么创建和连接数据库
    这篇文章主要介绍“怎么创建和连接数据库”,在日常操作中,相信很多人在怎么创建和连接数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么创建和连接数据库”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!创建...
    99+
    2023-06-08
  • ADO.NET中zm创建连接数据库
    今天就跟大家聊聊有关ADO.NET中zm创建连接数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。SQL Server数据库具有输出XML数据的能力。SQL Server .NET...
    99+
    2023-06-17
  • 如何创建ADO.NET连接数据库
    本篇内容主要讲解“如何创建ADO.NET连接数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何创建ADO.NET连接数据库”吧!假设您拥有一个名为"northwind.mdb&q...
    99+
    2023-06-17
  • python数据库连接池中数据库连接池技术的优点是什么
    本篇文章给大家分享的是有关python数据库连接池中数据库连接池技术的优点是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。昨天测试了一下开500个线程去请求数据库,不过这个...
    99+
    2023-06-17
  • Java操作数据库——使用连接池连接数据库
    传统方式和连接池方式传统方式的步骤使用传统方式在Java中使用JDBC连接数据库,完成一次数据库的操作,一般有以下几个步骤: 加载驱动。 建立连接。 执行SQL语句。 释放连接。 传统方式的弊端每一次对数据库的操作都要建立一次连接,并且会将...
    99+
    2014-08-26
    java基础 java 连接池
  • 数据库连接池的原理?连接池使用什么数据结构实现?实现连接池?
    早期我们怎么进行数据库操作呢? 1、原理:一般来说,Java应用程序访问数据库的过程是: 加载数据库驱动程序; 通过jdbc建立数据库连接; 访问数据库,执行SQL语句; 断开数据库连接。 2、代码 1 //查询所有用户 ...
    99+
    2015-09-26
    数据库连接池的原理?连接池使用什么数据结构实现?实现连接池?
  • 手写数据库连接池
      1.  相信很多人看这篇文章已经知道连接池是用来干什么的?没错,数据库连接池就是为数据库连接建立一个“缓冲池”,预先在“缓冲池”中放入一定数量的连接欸,当需要建立数据库连接...
    99+
    2022-10-18
  • 关于node+mysql数据库连接池连接
     mysql有两种连接方式:一种是直接连接 另一种是池化连接,我们这篇讲的是池化连接。 为了让解惑,我简答的写份直接连接的代码,如下: var mysql = requi...
    99+
    2023-05-16
    node+mysql node连接mysql
  • Jdbc 链接数据库(含连接池)
    package com.ygsoft.gris.mapp.materialmanage.impl.util;import java.math.BigDecimal;import java.sql.Calla...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作