ASP.NET 核心技术 | ADO.NET 使用Connection对象链接数据库


1、Connection对象简介

ADO.NET对象模型中,Connection对象代表了与数据源的连接,当连接到数据源时,首先选择一个.NET数据提供程序,数据提供程序包含一些操作类,使用这些类可以连接不同的数据源,以下四种数据提供程序的连接对象。

  • SQL Server .NET 数据提供程序的SqlConnection对象
  • OLE DB .NET 数据提供程序的OleDbConnection对象
  • ODBC .NET 数据提供程序的OdbcConnection对象
  • Oracle .NET 数据提供程序的OracleConnection对象

2、四大连接对象的数据源连接范围

数据存储包含以下格式:数据库XML文件文本文件AccessExcel等,对于这些多样化的数据源为了能够进行统一的管理,Connection对象提供了四个连接数据的对象,每个对象分别实现不同的数据源管理:

  • SqlConnection对象:是专为连接到SQL Server数据库而设计的
  • OleDbConnection对象:通过指定的数据源支持组件可以连接到任何数据库或文件
  • OdbcConnection对象:支持任何在Windows中配置好的ODBC连接,包括SQL Server、Sybase、Oracle数据库等
  • OracleConnection对象:是专为连接到Oracle数据库而设计的

3、SqlConnection连接SQL Server数据库——连接数据库并读取连接状态

在对数据库进行任何操作钱,都要先建立与数据库的连接。在使用SqlConnection类之前必须对其进行实例化,其语法格式如下:

Sql Server身份验证语句:

SqlConnection con = new SqlConnection("Server=服务器名;User Id=用户;Pwd=密码;DataBase=数据库名称");

Windows身份验证语句:

SqlConnection con = new SqlConnection("Server=服务器名;DataBse=数据库名称;Trusted_Connection=SSPI");

SqlConnection对象的常用属性及说明如下表所示:

属性 说明
ConnectionString 获取或设置用于打开SQL Server数据库的字符串
ConnectionTimeout 获取在尝试建立连接时终止尝试并生成错误之前所等待的时间
State 指示SqlConnection的连接状态:关闭、打开、正在连接、正在执行命令、已中断

SqlConnection对象常用方法及说明,如下表所示:

方法 说明
Open 打开数据库连接,所打开的数据库由ConnectionString属性或构造方法中配置的连接字符串绝定
Close 关闭数据库的连接,关闭后可以再次执行Open方法来打开数据库连接
Dispose 释放连接资源,释放之后不可再执行Open方法
CreateCommand 创建并返回一个与SqlConnection关联的SqlCommand对象

通过一个例子来展示一下SqlConnection是怎么使用的,这个例子就是——连接数据库并读取连接状态

首先创建一个网站,新建一个网页作为起始页。

在连接数据库之前,需要引用命名空间System.Data.SqlClient

起始页.aspx,cs中写代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;		//引入的命名空间

namespace SqlConnection连接数据库并读取连接状态
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string res = ConnectToSql();
            Response.Write(res);
        }
        private string ConnectToSql()
        {
            string res = "";
            string SqlStr = "Server=DESKTOP-9FCSCD4;DataBase=ReportServer;Trusted_Connection=SSPI";     //创建与数据库连接的字符串
            SqlConnection con = new SqlConnection(SqlStr);
            //拼接打开前的状态说明
            res += "&nbsp;&nbsp;&nbsp;准备打开,状态:" + con.State.ToString() + "<br>";
            con.Open();
            res += "&nbsp;&nbsp;&nbsp;已经打开,状态:" + con.State.ToString() + "<br>";
            con.Close();
            return res;
        }
    }
}

大功告成!效果如下:
在这里插入图片描述


4、OleDbConnection对象连接OLE DE数据源——连接EXCEL并读取状态

OLE DB数据源包含具有OLE DB驱动程序的任何数据源,如Sql Server、Access、Excel、Oracle等。OLE DB数据源连接字符串必须提供Provide属性及其值。

在使用该对象前必须将其实例化,语法如下:

OleDbConnection myConn = new OleDbConnection("Provide=提供者";Data Source = 文件路径");

下表是OleDbConnection对象常用的属性及说明:

属性 说明
ConnectionString 获取或设置打开数据源的字符串
Provider 操作数据源数据的组件程序
ConnectionTimeout 获取在尝试建立连接时终止尝试并生成错误之前所等待的时间
State 指示当前连接数据源的状态:关闭、打开、正在连接、正在执行命令和已中断

下表是OleDbConnection对象常用的方法及说明:

方法 说明
Open 打开数据源连接,所打开的数据源由ConnectionString属性或构造方法中配置的字符串连接决定
Close 关闭数据源连接,关闭后可以再次使用Open打开数据源
DisPose 释放连接资源,释放后不可以再使用Open方法
CreateCommand 创建并返回一个与该OleDbConnection关联的OleDbCommand对象

例子:连接EXCEL并读取连接状态

首先创建一个网站,并创建一个起始页。

使用OleDb连接数据源需要引用命名空间System.Data.OleDb

然后写代码:

using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace OleDbConnection连接EXCEL
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string res = ConnectToExcel(Server.MapPath("Excel/Test.xlsx"));
            Response.Write(res); 
        }

        private string ConnectToExcel(string ExcelPath)
        {
            string res = "";
            string ConnectStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
                ExcelPath + ";Extended Properties=\"Excel 12.0;HDR=NO;IMEX=0\"";
            OleDbConnection con = new OleDbConnection(ConnectStr);
            res += "准备打开,状态" + con.State.ToString() + "<br>";
            con.Open();
            res += "已经打开,状态" + con.State.ToString() + "<br>";
            con.Close();
            con.Dispose();      //释放
            return res;
        }
    }
}

发布了177 篇原创文章 · 获赞 282 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/lesileqin/article/details/103668693