VS.NET(C#)提升-2.13_数据库接口:connection及源码案例

对于ADO.NET而言,不同的数据源,都对应着不同的Connection对象。具体Connection对象如下表:

名称                               命名空间                                     描述

SqlConnection               System.Data.SqlClient              表示与SQL Server的连接对象 

OleDbConnection          System.Data.OleDb                  表示与OleDb数据源的连接对象                  

OdbcConnection          System.Data.Odbc                    表示与ODBC数据源的连接对象  

OracleConnection        System.Data.OracleClient           表示与Orale数据库的连接对象

上述不管哪种连接对象,它都继承于DbConnection类。

public abstract classDbConnection : Component, IDbConnection, IDisposable

可以看出DbConnection是抽象基类,不能实例化。

常见属性:

ConnectionString: 获取或设置用于打开连接的字符串。

Database: 在连接打开之后获取当前数据库的名称,或者在连接打开之前获取连接字符串中指定的数据库名。

DataSource: 获取要连接的数据库服务器的名称。

ConnectionTimeOut:获取在建立连接时终止尝试并生成错误之前所等待的时间。

State: 描述了与数据源的连接的当前状态。

ConnectionState是一个枚举类型。它包括以下成员:

Closed: 连接处于关闭状态。

Open: 连接处于打开状态。

Connecting: 连接对象正在与数据源连接。

Executing: 连接对象正在执行命令。

Fetching: 连接对象正在检索数据。

Broken: 与数据源的连接中断。

常用方法:

Open: 使用 ConnectionString 所指定的设置打开数据库连接。

Dispose: 释放由 Component 使用的所有资源。

Close: 关闭与数据库的连接。 此方法是关闭任何已打开连接的首选方法。Close 方法回滚任何挂起的事务。 然后,它将连接释放到连接池,或者在连接池被禁用的情况下关闭连接。

案例:连接SQL Server的SqlConnection对象

using System;

usingSystem.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

usingSystem.Data.SqlClient;

namespace connDb1

{

    class Program

    {

        static void Main(string[] args)

        {

            //构造连接字符串

            SqlConnectionStringBuilder  connStr = new SqlConnectionStringBuilder();

            connStr.DataSource = "192.168.1.20";

            connStr.InitialCatalog = "rzerp_zjsy";

            connStr.UserID = "developer";

            connStr.Password = "developer";

            SqlConnectionconn = new SqlConnection();  //创建连接对象

            conn.ConnectionString =connStr.ConnectionString;//设置连接字符串

            conn.Open();//打开连接

            if(conn.State == ConnectionState.Open)

            {

                Console.WriteLine("Database is linked.");

                Console.WriteLine("\nDataSource:{0}", conn.DataSource);

                Console.WriteLine("\nDatabase:{0}", conn.Database);

                Console.WriteLine("\nConnectionTimeOut:{0}",conn.ConnectionTimeout);

                Console.WriteLine("\nConnectionState:{0}", conn.State);

            }

            conn.Close();//关闭连接

            conn.Dispose(); //释放资源

            if(conn.State == ConnectionState.Closed)

            {

                Console.WriteLine("\nDatabase is closed.");

            }

        }

    }

}

运行结果如下:


增强连接SQL Server的代码安全性

连接数据库时,可能出现异常,因此需要添加异常处理。对于C#来说,典型的异常处理是添加try...catch代码块。finially是可选的,finially是指无论代码是否出现异常都会执行的代码块。

finially语句块中调用Close方法关闭数据库连接,确保打开连接后,无论是否出现异常,都关闭连接和释放资源。

上案例中修改代码如下:

try
{
	conn.Open();	//打开连接
	if (conn.State == ConnectionState.Open)
	{
	Console.WriteLine("Database is linked.");
	Console.WriteLine("\nDataSource:{0}", conn.DataSource);
	Console.WriteLine("\nDatabase:{0}", conn.Database);
	Console.WriteLine("\nConnectionTimeOut:{0}", conn.ConnectionTimeout);
	Console.WriteLine("\nConnectionState:{0}", conn.State);
	}
}
catch(Exception ex)
{
	Console.WriteLine("\nLink Database error:{0}",ex.Message);
}
finally
{

	conn.Close();	//关闭连接

        conn.Dispose();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值