首页 > 代码库 > ADO.NET学习笔记-链接到Data Store

ADO.NET学习笔记-链接到Data Store

1. 使用数据提供程序(Providers)移动数据
.NET默认包含的数据提供程序有以下4种:
  • OleDb
  • odbc
  • SQL Server
  • Oracle
除此之外还可使用第三方数据提供程序,如Mysql和DB2等。数据提供程序的主要功能为在本地程序和远程数据源(Data Store)之间移动数据。
 
2.DbConnection对象
要获取数据,首先要有一个合法可用的数据链接(Connection),数据链接的抽象类为DbConnection,再由数据提供程序的不同继承生成对应的具体数据链接类,如SqlConnection(Sql Server), MySqlConnection(MySql)等。打开/关闭一个链接的示例代码如下(SQL SERVER):
var connection = new SqlConnection();connection.ConnectionString =   "Server=.;Database=Northwind;Trusted_Connection=true";connection.Open();   //Do lots of cool work hereconnection.Close();
常用的关闭数据链接的方法有两个,一个是使用Close()方法,另一个是使用Using语句块,一般认为使用后者更好一些,一是你可以不用显示的调用Close()方法来关闭链接(经常会忘),二是如果有异常抛出,即使无法执法Close()语句,依然可以正常的关闭链接。
 
3. ConnectionString属性
设置ConnectionString属性是建立链接最难的一个环节,还好我们有VS工具等可以很直观的生成链接字符串。设置好链接字符串后,我们一般需将其保存在本地计算机中,这样即使链接字符串出现变化,我们也不必再次编译程序。在示例程序中,App.config文件中即包含了链接字符串内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="TestApp.Properties.Settings.toucaiConnectionString"
            connectionString="server=mytoucai.mysql.rds.aliyuncs.com;user id=lqs2011;password = gdz840928;persistsecurityinfo=True;database=toucai"
            providerName="MySql.Data.MySqlClient" />
    </connectionStrings>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>
从文件中读取链接字符串并打开链接的示例代码如下:
using System.Configuration;
 
static void Main()
        {
            var conString = ConfigurationManager.ConnectionStrings["TestApp.Properties.Settings.toucaiConnectionString"].ConnectionString;
            var conn = new MySqlConnection(conString);
            var cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "select count(*) from product";
           
            conn.Open();
            long count = (long)cmd.ExecuteScalar();
            Console.WriteLine("共有" + count + "条商品条记录");
            conn.Close();
           
        }
这段代码在执行时,如果App.conifg文件中的内容,如connectionString或name的属性值设置有误,则程序将抛出异常。另需注意的是需在引用中加入System.Configuration的引用,而不是仅仅加上using语句。
 
4. 到MySQL的加密通讯
此方面的内容还需查阅资料,但非常重要。
 
5. 链接池
考虑到建议一个到数据库的物理链接的开销巨大,ADO.NET使用了链接池机制来重用先前已建立的链接。系统默认的链接池设置已经够用,一般我们无需再自行设置。
链接池位于客户端,而不是服务器端。
链接池中链接的生命周期是有限的,通常为几分钟,如要保证链接池中的链接至少有N个有用,则可把Min Pool Size属性设置为N
在查找BUG时,可以暂时关闭链接池(链接字符串中的Pooling = false)
服务器重启后,链接池中的链接可能失效,于是我们需要运行DBConnection的静态方法ClearPool()或ClearAllPools()来清空链接池中的链接,以避免抛出异常。
 
 

ADO.NET学习笔记-链接到Data Store