SQL Server数据库可以采用两种不同的连接方式,正如SQL Server Management Studio中注册连接一样,包括Windows安全认证和SQL Server验证两种验证方式,SQL Server Management Studio中注册连接的方式如图10-9所示。
图10-9 SQL Server的两种连接方式
当使用Windows安全认证进行数据连接时,SQL Server无需用户提供连接的用户名和密码即可连接,因为Windows安全认证是通过Windows登录时的账号来登录的。开发ASP.NET应用程序时,需要显式的声明这是一个安全的连接,示例代码如下所示。
@\
如果需要使用SQL Server验证方式连接数据库,就不能够使用Trusted_Connection属性进行数据连接,而需要配置User=用户名;Password=密码,示例代码如下所示。
@\
10.2 使用OLE DB.NET Data Provider
OLE DB是访问数据库的另一个统一的接口标准,它建立在ODBC基础之上,通过OLE DB可以访问关系型数据库和非关系型数据库,OLE DB不仅使应用程序和数据库之间的交互减少,还能够最大限度的提升数据库性能。
10.2.1 OLE DB.NET Data Provider简介
OLE DB(Object Link and Embedding Database,对象连接与嵌套数据库)是访问数据库的另一个统一的接口标准,它建立在ODBC基础之上,不仅能够提供传统的数据库访问,并且能够访问关系型数据库和非关系型数据库。
OLE DB其本质就是一个封装数据库访问的一系列COM接口,使用COM接口不仅能够减少应用程序和数据库之间的通信和交互,也能够极大的提升数据库的性能,让数据库的访问和操作更加便捷。
OLE DB.NET Data Provider是OLE DB数据源的托管数据提供者,OLE DB.NET Data Provider能够在不更改COM组件的情况下,使用COM Interpol来使用OLE DB.NET Data Provider访问数据源,如果需要使用OLE DB.NET Data Provider访问数据源,则必须存在一个支持OLE DB.NET Data Provider的OLE DB Provider。OLE DB.NET Data Provider访问原理图如图10-10所示。
273
图10-10 OLE DB.NET Data Provider原理图
OLE DB.NET Data Provider支持OLE DB Provider包括: ? SQLOLEDB:用来访问SQL Server数据库。 ? MSDAORA:用来访问Oracle数据库。
? Microsoft.Jet.OLEDB.4.0:用于访问Access等使用Jet引擎的数据库。
使用OLE DB.NET Data Provider访问数据库同ODBC .NET Data Provider相同,具有Connection对象、Command对象等用于数据库的连接和执行,以及数据存储等,常用对象如下所示。
? OleDbConnection:建立与ODBC数据源的连接。 ? OleDbCommand:执行一个SQL语句或存储过程。
? OleDbDataReader:与Command对象一起使用,读取ODBC数据源。 ? OleDbDataAdapter:创建适配器,用来填充DataSet。
? OleDbCommandBuilder:用来自动生成插入、更新、删除等操作的SQL语句。 这些常用的对象使用方法同其他ADO.NET数据操作类相同,使用Connection对象进行数据库连接,连接后,使用Command对象进行数据库操作,并使用Close方法关闭数据连接。
10.2.2 建立连接
使用Ole Db连接数据库基本只需要使用字符串连接方式即可,当需要使用Ole Db中的对象时,必须使用命名空间System.Data.OleDb,示例代码如下所示。
using System.Data.OleDb;
//使用OleDb命名空间
使用命名空间后,就能够创建Ole Db的Connection对象,以及Command对象对数据库进行连接和数据操作。
274
1.使用接字符串进行连接(ACCESS)
Access数据库是一种桌面级的数据库,同文件类型的数据库类似,所以连接Access数据库时,必须指定数据库文件的路径,或者使用Server.MapPath来确定数据库文件的相对位置。示例代码如下所示。
string str = \
Data Source=\ OleDbConnection con = new OleDbConnection(str); try {
con.Open(); Label1.Text = \连接成功\ con.Close(); }
catch(Exception ee)
//设置连接字串 //创建连接对象
//打开连接 //显式提示信息 //关闭连接 //抛出异常
{
Label1.Text = \连接失败\ }
上述代码设置了Access数据库连接字串,并使用OleDb的Connection方法创建数据连接,创建连接后打开数据连接,如果数据连接打开成功,则返回成功,否则返回连接失败。
2.使用接字符串进行连接(SQL Server)
当需要连接SQL Server时,无需对连接、执行等操作进行修改,只需要对数据库连接字串进行修改即可,示例代码如下所示。
OleDbConnection con= new OleDbConnection(); con.ConnectionString=\ Source=(local);Initial Catalog=mytable;uid=sa;pwd=sa\ try {
con.Open(); Label1.Text = \连接成功\ con.Close(); }
catch {
Label1.Text = \连接失败\ }
//初始化连接字串
//尝试打开连接 //显式连接信息 //关闭连接
//抛出异常
上述代码只需修改连接字串的格式,而无需修改其他ADO.NET中的对象,以及对象执行的方法即可。
10.3 访问MySql
MySql是一个开源的小型关系型数据库,MySql数据库功能性强、体积小、运行速度快、成本低和安全性强,并且广泛的被中小型应用所接受。MySql通常情况下和PHP一起开发使用,在ASP.NET中,同样能够使用MySql进行数据库的存储。
275
10.3.1 MySql简介
MySql(http://www.MySql.com)是一套开源的小型关系型数据库,MySql能够执行标准的SQL语句进行数据操作。MySql能够支持多种操作系统,包括Windows、Linux、Mac OS等等,是一种跨平台的数据库产品,并且MySql还为多种语言提供了API,这些语言包括传统的C/C++也包括新近的Python和Ruby,MySql具有功能性强、体积小、运行速度快、成本低和安全性强等特点,MySql还具有以下特性:
? MySql具有客户端/服务器结构的分布式数据库管理系统。 ? 支持多个操作系统。
? 为多种编程语言提供API。
? 支持多用户,多线程操作数据库。
? 提供了TCP/IP,ODBC和JDBC等多种数据库连接方式。 ? 优化SQL语句能力,提升性能。 ? 支持ANSI标准的所有数据类型。
? 开放源代码,并且可以免费下载安装。
MySql不仅具有良好的性能表现,同时MySql还能够执行复杂的SQL语句操作,但是MySql的缺点就在于无法创建和使用存储过程,缺少一些大型数据库所必备的功能。
10.3.2 建立连接
ASP.NET应用程序需要使用ODBC .NET Data Provider连接MySql数据库。在连接数据库之前,MySql数据库能够被.NET Data Provider识别和驱动必须首先安装MySql ODBC驱动程序(MySql-connector-odbc-5.1.5),开发人员可以在官方网站免费获取MySql ODBC驱动程序并免费下载(http://dev.MySql.com/downloads/connector/odbc/5.1.html#win32)。单击下载的安装程序,MySql ODBC驱动程序就会弹出安装向导,并提示安装。通常情况下,只需要选择典型安装即可如图10-11和图10-12所示。
图10-11 安装MySql ODBC驱动程序 图10-12 选择安装类型
选择完成后,单击【Next】按钮后即可完成安装。安装完成MySql ODBC驱动程序后,单击【开始】菜单找到【控制面板】,在【控制面板】的【管理工具】中选择【数据源ODBC】选项,并在【数据源
276
ODBC选项】对话框中选择【驱动程序】选项卡,如果【驱动程序】选项卡中已经存在MySql ODBC Driver选项,则说明MySql ODBC驱动程序已经安装完成。当安装完成后,需要新建DSN,如图10-13和图10-14所示。
图10-13 驱动程序已经安装完毕 图10-14 新建MySql DSN
单击完成,系统会弹出对话框用于指定DNS名、MySql服务器名、数据库名、密码、端口等信息,如图10-15所示。
图10-15 为MySql ODBC配置DSN
配置完成后,即可通过使用ODBC类库进行数据库操作,示例代码如下所示。
string str = @\ //设置Connection属性,使用MySql DSN OdbcConnection con = new OdbcConnection(str); //设置Connection对象 con.Open();//打开连接
OdbcDataAdapter da = new OdbcDataAdapter(\创建DataAdapter DataSet ds = new DataSet(); //创建DataSet对象 da.Fill(ds, \ //填充DataSet数据集
同样可以创建Command对象进行数据操作,示例代码如下所示。
OdbcCommand cmd = new OdbcCommand(\ cmd.ExecuteNonQuery(); //执行Command方法 con.Close();
上述代码同连接和使用SQL数据库基本相同,其中str变量是配置的是DSN的属性。当需要脱离
277