首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

最佳实践在.Net代码中重新共享IDbConnection或连接字符串/工厂

在.Net代码中重新共享IDbConnection或连接字符串/工厂的最佳实践是使用连接池。连接池是一种管理数据库连接的技术,它可以重用已经打开的连接,而不是为每个请求创建新的连接。这可以提高应用程序的性能和可扩展性,同时减少数据库服务器的负担。

在.Net框架中,可以使用ADO.Net中的SqlConnection类来实现连接池。使用SqlConnection类时,可以将连接字符串作为参数传递给构造函数,或者使用配置文件中的连接字符串。

以下是一个使用SqlConnection类的示例代码:

代码语言:csharp
复制
using System.Data.SqlClient;

string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=True";

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // 在此处执行数据库操作
}

在上面的示例代码中,SqlConnection类的实例被包含在using语句中,以确保在执行完数据库操作后连接会被正确地关闭。

另外,还可以使用ADO.Net中的DbProviderFactory类来创建连接对象。使用DbProviderFactory类可以使代码更加通用和可扩展,以便在不同的数据库之间切换。

以下是一个使用DbProviderFactory类的示例代码:

代码语言:csharp
复制
using System.Data;
using System.Data.Common;

string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=True";

DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.SqlClient");

using (DbConnection connection = factory.CreateConnection())
{
    connection.ConnectionString = connectionString;
    connection.Open();
    // 在此处执行数据库操作
}

在上面的示例代码中,使用DbProviderFactories.GetFactory方法获取SqlClient的DbProviderFactory实例,然后使用CreateConnection方法创建连接对象。在执行完数据库操作后,连接会被正确地关闭。

总之,在.Net代码中重新共享IDbConnection或连接字符串/工厂的最佳实践是使用连接池,可以通过ADO.Net中的SqlConnection类或DbProviderFactory类来实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

.NET简谈设计模式之(策略模式)

模式是一种指导,一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会得到解决问题的最佳办法。...> public interface IDataSourceType { #region 属性 /// /// 获取设置数据源连接字符串...{ get { return _globalconnectionstring; } } /// /// 获取设置本次执行的数据源的连接字符串...默认所有的SQLServerSource实例均使用 /// 配置文件的SQLServerConnectionString类型的连接字符串。...但是怎么将对象送给前台调用者呢,方法有很多可以通过工厂、IOC控制器、策略方法都可以,我是用的工厂实现的;这里我就不贴出代码了,给出调用代码吧,可以完整的结束了; 情景分析->调用代码: /// <summary

69730
  • C#实现 IDbConnection IDbCommand 等相关通用数据接口

    关于数据接口 .net 应用,与数据库进行连接、访问和执行经常会用到数据接口的相关对象,如下: 1、 Connection 表示一个到数据库的打开的连接,是连接数据必不可少的对象。...2、 Command 命令对象,表示要对数据源连接执行的 SQL 语句存储过程,以获取返回结果执行返回值。...3、 DataParameter 用于表示Command命令对象需要的参数设置,虽然这是一个可选项,但在实际的应用几乎都会使用到 ADO.NET 的数据提供者对象提供了IDbConnection...2016、国产达梦数据 8 为例 设计与实现 引用 实现方法前请引用如下代码: using System.Data; using System.Data.SqlClient; using System.Data.OracleClient...string 对应数据库的连接字符串 实现代码如下: public System.Data.IDbConnection GetConnection(string DbServerType,string

    10410

    C# 从代码入门 Mysql 数据库事务

    =Password123;Database=mysqldb"; 使用 MySqlConnectionStringBuilder 构建连接字符串: var connectionBuilder = new...ReadUncommitted = 256, // 提交读,在读取数据时持有共享锁,以避免脏读,但是数据可以事务结束之前更改,从而导致不可重复读取幻像数据。...IDbConnection 或者在此 IDbCommand 没有主动提交时,当对象生命周期结束主动断开连接时、被回收到连接池时,事务会自动回滚。...可是问题来了,因为是 TransactionScope 创建 IDbConnection 并打开连接,也就是说 TransactionScope 作用域范围大于 IDbConnection ,那么...回到本小节第一个代码示例,事务不起效的问题。我们已经知道了是因为 IDbConnection 没有 TransactionScope 内创建,所以导致事务不能作用。

    26610

    通过“访问多种数据库”的代码来学习多态!(.net2.0版)

    就是获取连接字符串,下面有说明             SqlDataAdapter da = new SqlDataAdapter("select * from News", cn);             ...不需要的,我们只需要把数据库类型放到web.config里面, 里面读取就可以了,换数据库也不用改代码了。(理想情况下是这样的,但是实际往往是很复杂的,这里就先不讨论了)。...一是想简化代码;一是避免争论,使用try还是using本身就有争论,而这里不想讨论这个。所以就没有加。 2、连接字符串的处理也比较“睡意”,并不是很严密。这个有空的话会详细说明的。...5、以上代码已经vs2005 + sql2005的环境下测试成功。...6、.net2.0里面的代码 DbConnection public abstract class DbConnection : Component, IDbConnection, IDisposable

    742100

    C# 利用IDbDataAdapter IDataReader 实现通用数据集获取

    关于数据集 .net 应用,与数据库进行连接并查询相关数据,填充到数据集是我们经常用到的功能,数据集的表现形式基本包括如下: 1、 DataSet DataSet 是 ADO.NET 的数据集合对象...生成数据集对象需要利用 ADO.NET 的数据提供者对象包括IDbConnection、IDbCommand、IDbDataParameter等,如何使用这些对象请参考我的文章: 《C#实现 IDbConnection...DataSet通过命令对象() ExecuteReader 填充到 DataReader,大体流程如下图: 范例运行环境 操作系统: Windows Server 2019 DataCenter .net...netFramework4.7.1 或以上 开发工具:VS2019 C# 数据库:在这里我们以支持 Oracle 9i、MS SQL Server 2016、国产达梦数据 8 为例 通用对象的设计与实现 引用 实现方法前请引用如下代码...对应数据库的连接字符串 2 _sql string 要执行的SQL语句命令行 3 paras ArrayList 要赋值的参数对象,逐个添加到ArrayList里,请注意参数为实体数据参数对象,如 MS

    11510

    .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现

    如果您觉得我的实现过程有所不妥的话,您可以评论区留言,或者加入我们的千人.Net Core实战项目交流群637326624交流。另外如果您觉得我的文章对您有所帮助的话希望给个推荐以示支持。...项目的源代码我会托管GayHub上,地址文章末尾会给出,自认为代码写的很工整,注释也很全,你应该能看懂 写在前面 将近一周没有更新,鬼知道我这么长时间干什么,你可以认为我憋大招,在想着怎么给大家分享更多更实用的东西...Dapper的封装 IDbConnection工厂类的封装 这部分我实现了一个IDbConnection工厂类,以便你可以很方便的根据数据库的类型来创建不同的IDbConnection对象,目前已实现对...将清理代码放入以上 Dispose(bool disposing) 。...这部分代码如下图所示: ? ? 测试代码 重新执行下代码生成器的代码,测试的具体代码我已经放在GitHub上了,这里就不贴出来了,直接上生成结果如下图所示: ?

    96220

    抽象工厂模式与工厂方法模式有哪些不同_工厂方法和抽象工厂

    Abstract Factory 动机 实例 模式定义 结构 要点总结 笔记 动机 软件系统,经常面临着”一系列相互依赖的对象“的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作 如果应对这种变换...实例 数据库连接的时候会有很多关联的对象,这些对象是一个整体 朴素 class EmployeeDAO{ public: vector GetEmployees...Abstract Factory //数据库访问有关的基类 class IDBConnection{ }; class IDBommand{ }; class IDataReader...结构 要点总结 如果没有应对”多系列对象构建“的需求变换,则没有必要使用Abstract Factory模式 这时候使用简单的工厂完全可以、 ”系列对象“指的是某一特定系列下的对象之间有相互依赖作用的关系...其缺点在于难以应对”新对象“的需求变动 笔记 抽象工厂就是工厂模式的基础上创建多个对象 抽象工厂就是创建很多个对象 对象之间是一组一组的关系 不能这个对象用这个组里的 那个对象又用另外一个组里的 设计模式是解决稳定中有变换

    32330

    asp.net core 系列之webapi集成Dapper的简单操作教程

    Dapper也是是一种ORM框架 这里记录下,使用ASP.NET 集成 Dapper 的过程,方便自己查看 至于Dapper的特性以及操作可以参考Dapper官方文档 1.创建数据库相关 Sql Server...Web Api 项目 文件->新建->项目 选择 ASP.NET Core Web 应用 的模板,项目名 DapperDemo 新的 ASP.NET Core Web 应用的页面,选择 API 模板...也可以使用 程序包管理器控制台 进行安装 Install-Package Dapper 5.使用Dapper   Dapper的使用需要下面三步: 使用连接字符串( connection string...dbConnection.Open(); 66 dbConnection.Query(sQuery, prod); 67 } 68 } 69 } 这里的连接字符串是直接写在代码里的...方法里打了个断点 浏览器输入 https://localhost:44315/api/product ?

    1.7K20

    ASP.NET Core 实战:基于 Dapper 扩展你的数据访问方法

    一、前言   非静态页面的项目开发,必定会涉及到对于数据库的访问,最开始呢,我们使用 Ado.Net,通过编写 SQL 帮助类帮我们实现对于数据库的快速访问,后来,ORM(Object Relational...涉及到的类文件主要是以下的类库,基于 Dapper 的数据访问代码则位于基础构造层(02_Infrastructure),而使用到这些数据访问代码的,有且仅在位于领域层(03_Domain)代码.../// 数据库连接 IDbConnection DbConnection(); /// 执行SQL语句存储过程返回对象 T Execute(string sql, object... ASP.NET MVC ,我们可以 Application_Start 方法中进行调用,但是 ASP.NET Core ,我一直没找到如何实现仅在程序开始运行时执行代码,所以,这里,我采用了中间件的形式将...,我们就可以使用了,这里的示例代码实现的是上一篇(ASP.NET Core 实战:基于 Jwt Token 的权限控制全揭露),进行 Jwt Token 授权,验证登录用户信息的功能。

    1.8K30

    C#利用IDbCommand实现通用数据库脚本执行程序

    关于 ExecuteNonQuery .net 应用,在数据库执行脚本程序是经常用到的功能,如数据操作(新增、修改、删除等),执行一个存储过程等,实现的核心方法需要执行 Command 对象的ExecuteNonQuery...生成数据集对象需要利用 ADO.NET 的数据提供者对象包括IDbConnection、IDbCommand、IDbDataParameter等,如何使用这些对象请参考我的文章: 《C#实现 IDbConnection...Oracle 9i、MS SQL Server 2016、国产达梦数据 8 为例 通用类的设计 引用 实现方法前请引用如下代码: using System.Data; using System.Data.SqlClient...[ConnKeyString]存储的数据连接串,该关键字为优先选项,如果为空则访问 ConnString 直接连接串 2 public string ConnString="" 属性 IdbConnection...对象的连接串,该属性仅到ConnKeyString为空时试图访问 3 public string DbServerType="" 属性 目前支持 "oracle"、 "dm8",其它字符串均视为 MS

    9410

    C#-Dapper使用教程与原理详解

    本文详细介绍了DapperC#的使用方法,包括Dapper的基本概念、与其他持久层框架的比较、基本语法和高级语法的使用,并通过实例讲解了如何在项目中集成和使用Dapper。...本文还将深入探讨Dapper的核心原理,通过内部代码展示其工作机制。最后,总结了Dapper的优缺点及其实际开发的应用场景,为开发者提供全面的指导。一、Dapper介绍1....Dapper介绍Dapper是一个轻量级的ORM(对象关系映射)框架,专为.NET设计。它通过扩展IDbConnection接口,使开发者能够方便地执行SQL查询,并将查询结果映射到对象模型。2....它的主要工作流程如下:建立数据库连接:使用ADO.NETIDbConnection接口建立数据库连接。执行SQL查询:通过Dapper提供的扩展方法(如Query、Execute等)执行SQL查询。...Dapper的高效和简洁使其成为处理简单到中等复杂度数据库操作的理想选择,但对于复杂的业务场景,仍需结合其他框架工具进行综合使用。

    24021

    C# Web控件与数据感应之 ListControl 类

    Web控件与数据源之间的交互,诸如 System.Web.UI.WebControls 里的 DropDownList控件、ListBox控件,又如 System.Web.UI.HtmlControls 的...Oracle 9i、MS SQL Server 2016、国产达梦数据 8 的通用数据库内容提取方法为例, 生成数据源需要利用 ADO.NET 的数据提供者对象包括IDbConnection、IDbCommand...命令及配置相关参数,将数据源感应到指定的 ListControl 类控件上,其参数说明如下表: 序号 参数名 类型 说明 1 DbServerType string 目前支持 "oracle"、 "dm8",其它字符串均视为...MS SQL Server 2 strConn string 对应数据库的连接字符串 3 sql string 要执行的SQL语句命令行 4 paras ArrayList 要赋值的参数对象,逐个添加到...B105-C4453028925D"; //项目ID paras.Add(new SqlParameter("@cid", xm_cid)); simpledatalist("sqlserver","数据库连接

    7610

    C# Web控件与数据感应之 Control 类

    ----关于数据感应 数据感应也即数据捆绑,是一种动态的,Web控件与数据源之间的交互,诸如 ListControl 类类型控件,我的文章《C# Web控件与数据感应之 ListControl 类》...的数据提供者对象包括IDbConnection、IDbCommand、IDbDataParameter等,如何使用这些对象请参考我的文章: 《C#实现 IDbConnection / IDbCommand...命令及配置相关参数,将数据源感应到指定的 Control 类控件上,其参数说明如下表: 序号 参数名 类型 说明 1 DbServerType string 目前支持 "oracle"、 "dm8",其它字符串均视为...MS SQL Server 2 strConn string 对应数据库的连接字符串 3 sql string 要执行的SQL语句命令行 4 paras ArrayList 要赋值的参数对象,逐个添加到...小结 范例中所需数据库驱动链接库,请下载我的资源: https://download.csdn.net/download/michaelline/89235824 本方法适用于所以对应说明表的 Control

    7410

    .NET的各种池

    .NET,常用到的池有四个:字符串拘留池、线程池 、应用程序池、数据库连接池。 字符串拘留池 .NET字符串是不可变对象,修改字符串变量的值会产生新的对象。... ,卸载AppDomain时会抛出该异常 CLR宿主进程终止一个线程时 .NET1.0和1.1版本, CLR会处理掉线程池中未处理的异常。...数据库连接池 和数据库服务器建立连接的过程是比较耗时的,对此,ADO.NET中使用了连接池来进行优化。.NET不同的Data Provider对于连接池的处理方式不尽相同。...我们调用IDbConnection的Open方法时,CLR会去连接池中寻找是否有可用的连接,若有则返回该连接而无需与数据库建立新的连接。...第一次打开连接时,ADO.NET会根据连接配置来建立连接池。ADO.NET为每个连接配置创建一个连接池,所以若程序中用到多个不同的连接配置(如,不同的连接字符串),则会有多个连接池。

    90240

    ADO.NET入门教程(四) 品味Connection对象

    在上一篇文章《你必须知道的ADO.NET(三) 连接字符串,你小觑了吗》,我详细讲解了连接字符串,相信大家都和我一样意识到它的重要性了。...对于ADO.NET而言,不同的数据源,都对应着不同的Connection对象。...必须掌握的几个属性 Database: 连接打开之后获取当前数据库的名称,或者连接打开之前获取连接字符串中指定的数据库名。 DataSource: 获取要连接的数据库服务器的名称。...ConnectionTimeOut: 获取在建立连接时终止尝试并生成错误之前所等待的时间。 ConnectionString: 获取设置用于打开连接字符串。...所以,我们必须在finially语句块调用Close方法关闭数据库连接

    97860

    写一个通用数据访问组件

    data provider)稳定而强大功能的前提下来访问不同的数据源(data sources).一个小伙子甚至问我能不能写一些代码程序运行时指定数据提供者(data provider)。...,方法将返回IdbConnection.从下面的代码1你们将看到我们根据用户在运行时提供的连结种类类型参数(connection type argument)来生成SqlConnection, OleDbConnection...根据选择的连接类型,联结到数据库关且向DataGrid填充数据。 我的应用程序里面,我定义了下面的变量。...你可以扩展用ADO.net其实的组组件来这个类的功能,我一直努力使这篇文章通俗易懂。...本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同支持。

    57630

    关于Dapper.NET的相关论述

    Dapper.NET是一个简单的ORM,专门从SQL查询结果快速生成对象。Dapper.Net支持执行sql查询并将其结果映射到强类型列表动态对象列表。Dapper.Net缓存每个查询的信息。...Dapper.Net也假定连接已打开并准备就绪,Dapper.NET通过对IDbConnection接口进行扩展。...Dapper.NET对数据库连接完成后,可以进行相关的操作,接下来我们就来看一下这些操作的实现方式。...Query方法的实现,有一个CommandDefinition类,用来表示sql操作的关键方面。该类下有一个GetInit()方法。...三.Dapper.NET扩展:    这一部分是借花献佛,该部分代码是对Dapper.NET代码做一封装,可以类似于操作其他ORM的方式,需要者可以自取,就不要到处去找这些东西了。

    1.3K70
    领券