C#与数据库访问技术总结(二)之 Connection对象

2.2 Connection 对象与数据库连接

    在不同的Provider类型下,Connection对象的命名也是不同的,但它们有一个共同的功能,那就是管理与数据源的连接。

2.2.1  Connection对象的常用属性

Connectionion对象主要用于连接数据库,它的常用的属性如下。

ConnectionString属性:该属性用来获取或设置用于打开SQL Server数据库的字符串。

ConnectionTimeout属性:该属性用来获取在尝试建立连接时终止尝试,并生成错误之前所等待的时间。

DataBase属性:该属性用来获取当前数据库或连接打开后要使用的数据库的名称。

DataSource属性:该属性用来设置要连接的数据源实例名称。

例如SQLServer的Local服务实例。

 State性该属性:是一个枚举类型的值,用来表示同当前数据库的连接状态。该属性的取值情况和含义如下表所示。

Provider值描述(ConnectionSate枚举成员值)

 

属  性  值

对应含义 

Broken

该连接对象与数据源的连接处于中断状态。只有当连接打开后再与数据库失去连接才会导致这种情况。可以关闭处于这种状态的连接,然后重新打开(该值是为此产品的未来版本保留的)

Closed

该连接处于关闭状态

Connecting

该连接对象正在与数据源连接(该值是为此产品的未来版本保留的)

Executing

该连接对象正在执行数据库操作的命令

Fetching

该连接对象正在检索数据

Open

该连接处于打开状态

 

 

 

 

 

 

 

 

 

 

 

 

State属性一般是只读不写的,以下代码演示了使用State属性管理控制数据连接的方式。

复制代码

//设置连接对象

SqlConnection conn;

//如果是空闲状态,连接数据库

if(conn.State == ConnectionState.Closed)

{

conn.Open();

}

//访问数据库的代码

……

//最后关闭连接

if(conn.State == ConnectionState.Open)

{

conn.Close();

}

复制代码

 

 

2.2.2  Connection对象的连接字符串

在ConnectionString连接字符串里,一般需要指定将要连接数据源的种类、数据库服务器的名称、数据库名称、登录用户名、密码、等待连接时间、安全验证设置等参数信息,这些参数之间用分号隔开。下面将详细描述这些常用参数的使用方法。

1. Provider参数

     Provider参数用来指定要连接数据源的种类。如果使用的是SQL ServerDatahovider,则不需要指定Provider参数,因为SQL Server DataProvider已经指定了所要连接的数据源是SQl Server服务器。如果使用的是O1eDB Data Provider或其他连接数据库,则必须指定Provider参数。(注意:有的人喜欢用udl获取数据库连接用的string,但是其中会带有Provider参数,编译时出错,所以当出错信息提示 Provider 有关的内容错误时,可以删除这一项。)

下表说明了Provider参数值和连接数据源类型之间的关系。

 

Provider值

对应连接的数据源

SQL OLE DB

Microsoft OLEDB Provider for SQL Server

MSDASQL

Microsoft OLEDB Provider for ODBC

Microsoft. Jet. OLEDB.4.0

Microsoft OLEDB Provider for Access

MSDAORA

Microsoft OLEDB Provider for Oracle

 

 

 

 

 

 

 

 

2.Server参数

Server参数用来指定需要连接的数据库服务器(或数据域)。比如Server=(local),指定连接的数据库服务器是在本地,也可以用 Server = . 。如果本地的数据库还定义了实例名,Server参数可以写成Server=(local)\实例名。另外,可以使用计算机名作为服务器的值。如果连接的是远端的数据库服务器,Server参数可以写成Server=IP或“Server=远程计算机名”的形式。

Server参数也可以写成Data Source,比如Data Source=IP。

1

2

3

server=(local);Initial Catalog=student;user Id=sa; password= ;

 

Data Source=(localhost);Initial Catalog=student;user Id=sa; password= ;

3.DataBase参数

DataBase参数用来指定连接的数据库名。比如DataBase=Master,说明连接的数据库是Master,DataBase参数也可以写成Initial Catalog,如Initial Catalog=Master。

4.User id参数和Password参数

Uid参数用来指定登录数据源的用户名,也可以写成UserID。比如Uid(User ID)=sa,说明登录用户名是sa。

Pwd参数用来指定连接数据源的密码,也可以写成Password。比如Pwd(Password)=asp.net,说明登录密码是asp.net。

5.Connect Timeout参数

Connect Timeout参数用于指定打开数据库时的最大等待时间,单位是秒。

如果不设置此参数,默认是15秒。如果设置成-1,表示无限期等待,一般不推荐使用。

6.Integrated Security参数

Integrated Security参数用来说明登录到数据源时是否使用SQL Server的集成安全验证。

如果该参数的取值是True(或SSPI,或Yes),表示登录到SQL Server时使用Windows验证模式,即不需要通过Uid和Pwd这样的方式登录。

如果取值是False(或No),表示登录SQL Server时使用Uid和Pwd方式登录。

一般来说,使用集成安全验证的登录方式比较安全(第一种如果),因为这种方式不会暴露用户名和密码。 

安装SQL Server时,如果选中“Windows身份验证模式”单选按钮则应该使用如下的连接字符串Data Source=(local); Init Catalog=students; Integrated Security=SSPI;

Integrated Security=SSPI表示连接时使用的验证模式是Windows身份验证模式。 

7.Pooling、MaxPool Size和Min Pool Size参数

      Pooling参数用来说明在连接到数据源时,是否使用连接池,默认是True。

  当该值为True时,系统将从适当的池中提取SQLConnection对象,或在需要时创建该对象并将其添加到适当的池中。

  当取值为False时,不使用连接池。

     当应用程序连接到数据源或创建连接对象时,系统不仅要开销一定的通信和内存资源,还必须完成诸如建立物理通道(例如套接字或命名管道),与服务器进行初次握手,分析连接字符串信息,由服务器对连接进行身份验证,运行检查以便在当前事务中   登记等任务,因此往往成为最为耗时的操作。

     实际上,大多数应用程序仅使用一个或几个不同的连接配置。这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭。为了使打开的连接成本最低,ADO.NET使用称为Pooling(即连接池)的优化方法。

    在连接池中,为了提高数据库的连接效率,根据实际情况,预先存放了若干数据库连接对象,这些对象即使在用完后也不会被释放。应用程序不是向数据源申请连接对象,而是向连接池申请数据库的连接对象。另外,连接池中的连接对象数量必须同实  际需求相符,空置和满载都对数据库的连接效率不利。

    Max Pool Size和Min Pool Size这两个参数分别表示连接池中最大和最小连接数量,默认分别是100和0。根据实际应用适当地取值将提高数据库的连接效率。

8.综合实例

    下面通过实例来说明连接字符串的具体含义。

如果连接字符串是:

"Provider= Microsoft.Jet.OleDB.4.0;Data Source=D:\login.mdb"

 

    则说明数据源的种类是Microsoft.Jet.OleDB.4.0,数据源是D盘下的login.mdb Access数据库,用户名和密码均无。

如果连接字符串是:

"Server= (local); DataBase=Master;Uid =sa;Pwd=;ConnectionTimeout=20"

 

    由于没有指定Provider,所以可以看出该连接字符串用于创建SqlConnection对象,连接SQL Server数据库。需连接的SQL Server数据库服务器是local,数据库是Master,用户名是sa,密码为空,而最大连接等待时间是20秒。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C#中,可以通过多种方式实现数据库访问。以下是一些常用的数据库访问方式: 1. ADO.NET: - ADO.NET 是基于.NET框架的一种数据库访问技术,通过提供一组类和接口来实现对数据库访问。 - 使用 ADO.NET,可以通过连接对象(如 SqlConnection)、命令对象(如 SqlCommand)、数据读取器(如 SqlDataReader)等来执行数据库操作。 2. Entity Framework(EF): - Entity Framework 是.NET框架中的一个对象关系映射(ORM)框架,用于将数据库中的表映射为.NET对象。 - EF 提供了一种高级的、面向对象的方式来访问数据库,通过 LINQ 查询和操作实体对象来执行数据库操作。 3. Dapper: - Dapper 是一个简单、轻量级的ORM工具,旨在提供高性能的数据库访问。 - Dapper 使用了轻量级的对象映射,通过 SQL 查询和参数化查询来执行数据库操作。 4. LINQ to SQL: - LINQ to SQL 是.NET框架中的一种ORM技术,用于将数据库中的表映射为.NET对象,并使用 LINQ 查询和操作这些对象。 - 它提供了一种直观的方式来进行数据库查询和操作,但已被 Entity Framework 取代。 5. 使用第三方库: - 除了上述的.NET内置方式,还可以使用第三方库来实现数据库访问,如 NHibernate、Dapper、Npgsql 等。 - 这些库提供了更多的功能和灵活性,可以根据具体需求选择合适的库。 无论使用哪种方式,数据库访问的基本流程都包括建立数据库连接、执行查询或更新操作、处理结果或异常,以及关闭数据库连接。在编写数据库访问代码时,需要注意安全性、性能和可维护性等方面的考虑。 总结C#中的数据库访问可以通过多种方式实现,包括 ADO.NET、Entity Framework、Dapper、LINQ to SQL等。这些方式提供了不同的功能和灵活性,可以根据具体需求选择合适的方式。无论使用哪种方式,都需要注意安全性、性能和可维护性等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐白001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值