ADO.NET概念

ADO.NET 提供对诸如 SQL Server 和 XML 这样的数据源以及通过 OLE DB 和 ODBC 公开的数据源的一致访问。 共享数据的使用方应用程序可以使用 ADO.NET 连接到这些数据源,并可以检索、处理和更新其中包含的数据。ADO.NET 类位于 System.Data.dll 中,并与 System.Xml.dll 中的 XML 类集成。

简单的理解就是,微软定义了一堆关于操作数据源的接口和类,是C#语言访问数据源的一种方式。

ADO.NET常用对象

  • Connection      → 数据库连接器
  • Command       → 数据库命名对象
  • DataReader   →数据读取器
  • DataAdapter   →数据适配器,填充DataSet

 Connection对象 

Connection对象也称为数据库连接对象,Connection对象的功能是负责对数据源的连接。所有Connection对象的基类都是DbConnection类,DbConnection 对象位于命名空间     System.Data.Common,.Net提供了四种Connection 对象:

  1. 针对Sql Server的SqlConnection,位于命名空间System.Data.SqlClient下
  2. 针对Oledb链接的OledbConnection,位于命名空间System.Data.Oledb下
  3. 针对MySql的MySqlConnection,位于命名空间System.Data.MySqlClient下(需要引用MySql.Data.dll)
  4. 针对Oracle的OracleConnection,位于命名空间Oracle.ManagedDataAccess.Client(需引用Oracle.ManagedDataAccess.dll)

我们都知道,链接数据源的时候,首先第一步得获取链接字符串ConnectionString,每一种数据源都有自己的链接字符串格式

SQL链接字符串:“Data Source=.;Initial Catalog=ax_log;User Id=sa;Password=sa;”

MySql链接字符串:"server=.;database=ax_log;user id=sa;password=sa;Charset=utf8"

Access链接字符串:“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database.mdb;User Id=sa;Password=sa;”

Oracle链接字符串:“USER ID=sa;DATA SOURCE=192.168.0.2/ax_log;PASSWORD=sa”

   ConnectionStringBuilder对象

如果记不清楚链接字符串的格式怎么办,没关系,你只需要记住一个对象就能帮你生产链接字符串,这个对象是ConnectionStringBuilder

SqlConnectionStringBuilder,MySqlConnectionStringBuilder,DbConnectionStringBuilder都继承DbConnectionStringBuilder基类
            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = ".";
builder.InitialCatalog = "ax_log";
builder.UserID = "sa";
builder.Password = "sa";
Console.WriteLine(builder.ConnectionString); 结果:Data Source=.;Initial Catalog=ax_log;User ID=sa;Password=sa
            MySql.Data.MySqlClient.MySqlConnectionStringBuilder mysqlbuild = new MySql.Data.MySqlClient.MySqlConnectionStringBuilder();
mysqlbuild.Server = ".";
mysqlbuild.Database = "ax_log";
mysqlbuild.UserID = "sa";
mysqlbuild.Password = "sa";
Console.WriteLine(mysqlbuild.ConnectionString);
            结果:Server=.;Database=ax_log;User Id=sa;Password=sa
  Oracle.ManagedDataAccess.Client.OracleConnectionStringBuilder oraclebuil = new Oracle.ManagedDataAccess.Client.OracleConnectionStringBuilder();
oraclebuil.DataSource = "192.168.0.2/ax_log";
oraclebuil.UserID = "sa";
oraclebuil.Password = "sa";
Console.WriteLine(oraclebuil.ConnectionString); 结果:USER ID=sa;PASSWORD=sa;DATA SOURCE=192.168.0.2/ax_log

我们继续来介绍Connection对象 ,首先我们先做个小示例:测试是否能够正常链接到数据库

 string connectionString = "Data Source=.;Initial Catalog=ax_log;User Id=sa;Password=sa123;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
connection.Open();
if (connection.State == ConnectionState.Open)
{
Console.WriteLine("链接数据库成功");
Console.WriteLine("状态:" + connection.State);
}
}
catch (Exception ex)
{
Console.WriteLine("链接数据库失败:" + ex.Message);
}
}

上代码有几个需要我们关注的地方:

其一:connection.Open();  Open方法是打开数据库链接的意思,但是一定要记得关闭或者释放,因为连接池有最大限制,如果不及时关闭,当达到最大值的时候,会出现无法链接情况。关闭释放:connection.Close()//关闭链接,connection.Dispose()//释放资源。还可以使用另外一种方式Using,using语句的作用是确保资源使用后,并很快释放它们。using语句帮助减少意外的运行时错误带来的潜在问题,它整洁地包装了资源的使用。

          连接池就是这样一个容器:它存放了一定数量的与数据库服务器的物理连接。因此,当我们需要连接数据库服务器的时候,只需去池(容器)中取出一条空闲的连接,而不是新建一条连接。这样的话,我们就可以大大减少连接数据库的开销,从而提高了应用程序的性能

其二:ConnectionState表示链接状态是一个eunm类型:

 //
// 摘要:
// 连接处于关闭状态。
Closed = ,
//
// 摘要:
// 连接处于打开状态。
Open = ,
//
// 摘要:
// 连接对象正在与数据源连接。(该值是为此产品的未来版本保留的。)
Connecting = ,
//
// 摘要:
// 连接对象正在执行命令。(该值是为此产品的未来版本保留的。)
Executing = ,
//
// 摘要:
// 连接对象正在检索数据。(该值是为此产品的未来版本保留的。)
Fetching = ,
//
// 摘要:
// 与数据源的连接中断。只有在连接打开之后才可能发生这种情况。可以关闭处于这种状态的连接,然后重新打开。(该值是为此产品的未来版本保留的。)
Broken =

Connection对象的几个属性:

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

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

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

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

   State获取描述连接状态的字符串

 string connectionString = "Data Source=.;Initial Catalog=ax_log;User Id=sa;Password=sa;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
Console.WriteLine("DataSource:"+connection.DataSource);
Console.WriteLine("Database:"+connection.Database);
Console.WriteLine("State:" + connection.State);
Console.WriteLine("ConnectionTimeout:" + connection.ConnectionTimeout);
Console.WriteLine("ConnectionString:" + connection.ConnectionString);
} 结果:

DataSource:.
                   Database:ax_log
                   State:Closed
                   ConnectionTimeout:15
                   ConnectionString:Data Source=.;Initial Catalog=ax_log;User Id=sa;Password=sa;


ADO.NET系列之Connection对象的更多相关文章

  1. ADO.NET系列之Command对象

    ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 上一篇<ADO.NE ...

  2. ADO.NET系列之DataAdapter对象

    ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 我们前两篇文章介绍了ADO ...

  3. ADO.NET系列之事务和调用存储过程

    ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 前几篇我们介绍了Conne ...

  4. ADO中最重要的对象有三个:Connection、Recordset和Command

    ConnectionPtr: _ConnectionPtr m_pConnection; HRESULT hr; try{ hr = m_pConnection.CreateInstance(_uui ...

  5. ADO.net Connection对象简介

    Connection对象 学习的是刘皓的文章  ADO.NET入门教程(四) 品味Connection对象 这篇文章开始水平一般起来了,主要介绍了要优雅的使用这个对象 1 用try...catch.. ...

  6. ADO.net中常用的对象介绍

    ADO.NET的对象主要包括:DataSet,DataTable,DataColumn,DataRow,和DataRelation. DataSet:这个对象是一个集合对象,它可以包含任意数量的数据表 ...

  7. ADO.NET中的Connection详解

    连接字符串 1.写法一 "Data Source=服务器名; Initial Catalog=数据库; User ID =用户名; Password=密码; Charset=UTF8; &q ...

  8. C#开发学习——ADO.NET几个重要对象

    ADO.NET包括多个对象模型,有Connection/Command/DataReader/DataAdapter/DataSet/DataTable/DataView等. 命名空间System.D ...

  9. ADO.NET中的五大对象

    Connection connection 对象主要是开启程序和数据库之间的连接.没有利用连接对象将数据库打开,是无法从数据库中取到数据的.这个物件是ADO.NET的最底层,我们可以自己产生这个对象, ...

随机推荐

  1. haproxy 学习

    https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4-option%20tcp-check https://www.hapro ...

  2. TPM、read counts、RPKM/FPKM你选对了吗?

    TPM.read counts.RPKM/FPKM你选对了吗? 已有 3940 次阅读 2017-12-15 15:04 |个人分类:RNA-seq|系统分类:科普集锦|关键词:RNA-seq| RN ...

  3. ipconfig 查看本机IP地址

    打开cmd 窗口 然后输入ipconfig 就会为你展示你想要的IP地址了...

  4. 记录如何用abd,用电脑输出手机操作信号

    0.http://www.wmzhe.com/soft-39913.html 去这里下载最新版的adb.旧版本很多不好使.一定最新的. 1.用豌豆荚装好驱动 2.开启usb调试.具体方法可以百度到 3 ...

  5. springmvc 返回汉字乱码

    1.删除配置文件中的<mvc:annotation-driven  /> 2.添加如下配置 <bean class="org.springframework.web.ser ...

  6. Android 控制ScrollView滚动到底部或顶部

    在开发中,我们经常需要更新列表,并将列表拉倒最底部,比如发表微博,聊天界面等等, 这里有两种办法,第一种,使用scrollTo(): public static void scrollToBottom ...

  7. C语言基础第二次作业

    PTA第一次作业 题目7-1  统计学生成绩 1.实验代码 #include<stdio.h> int main(void){ ,B=,C=,D=,E=,f; scanf("%d ...

  8. 使用delphi 开发多层应用(十九) ios通过soap 访问kbmmw服务器

    随着delphi XE4 的推出,开始真正意义上支持ios 的开发,由于目前kbmmw 还不完全支持ios 的开发,因此 无法直接使用kbmmw 的客户端访问kbmmw 的服务器(虽然kbmmw 也提 ...

  9. 将Tomcat设置为自动启动的服务最快捷方法

    将Tomcat设置为自动启动的服务: 最近遇到了个问题,服务器上的项目突然访问不了,就上服务器去重启了tomcat服务,谁知道到最后tomcat的服务报错了,重新启动服务的选项 也没有,之前这个项目也 ...

  10. hdu-1711(kmp算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 思路:kmp模板,注意用scanf,不然超时. #include<iostream> ...