10.1 使用ODBC .NET Data Provider

  ODBC(Open Database Connection,开放式数据互连)是访问数据库的一个统一的接口标准。在C++开发中,经常使用ODBC来与数据库互连,.NET同样提供了连接ODBC的方法。ODBC可以让开发人员通过API来访问多种不同的数据库,包括SQL Server、Access、MySql等。

10.1.1 ODBC .NET Data Provider简介
  ODBC(Open Database Connection,开放式数据互连)是访问数据库的一个统一的接口标准,它允许开发人员使用ODBC API(应用程序接口)来访问多种不同的数据源,并执行数据操作。
  当使用应用程序时,应用程序首先通过使用ODBC API与驱动管理器进行通信。ODBC API由一组ODBC函数调用组成,通过API调用ODBC函数提交SQL请求,然后驱动管理器通过分析ODBC函数并判断数据源的类型。驱动管理器会配置正确的驱动器,然后将ODBC函数调用传递给驱动器。最后,驱动器处理ODBC函数调用,把SQL请求发送给数据源,数据源执行相应操作后,驱动器返回执行结果,管理器再吧执行结果返回给应用程序,如图10-1所示。
ODBC原理图
图10-1 ODBC原理图
  使用命名空间System.Data.Odbc才能够使用ODBC .NET Data Provider来访问ODBC数据源,并且支持对原有的ODBC驱动程序的访问。通过ODBC能够连接和执行数据操作,其访问方式和SQL Server .NET Data Provider相似,都需要先与数据源建立连接并打开连接,然后创建Command对象执行相应操作,最后关闭数据连接。
  通过ODBC驱动程序访问数据源与SQL Server .NET Data Provider相同,ODBC .NET Data Provider同样包含Connection、Command、DataReader等类为开发人员提供数据的遍历和存取等操作,这些类和功能如下所示。
1)OdbcConnection:建立与ODBC数据源的连接。
2)OdbcCommand:执行一个SQL语句或存储过程。
3)OdbcDataReader:与Command对象一起使用,读取ODBC数据源。
4)OdbcDataAdapter:创建适配器,用来填充DataSet。
5)OdbcCommandBuilder:用来自动生成插入、更新、删除等操作的SQL语句。
  上述对象在ADO.NET中经常遇到,在前面的章节中,SQL Server .NET Data Provider同样包括这些对象,使用ODBC操作数据源的操作方法与SQL Server .NET Data Provider基本相同,使得开发人员无需额外的学习即可轻松使用。

10.1.2 建立连接
  ODBC .NET Data Provider连接数据库有两种方法,一种是通过DSN连接数据库,第二种就是使用OdbcConnection对象建立与数据库的连接。
1.使用DSN的连接字符串进行连接
  使用DSN(Data Source Name,数据源名)连接数据库,必须首选创建ODBC数据源,当创建一个ODBC数据源时,需要在管理工具中配置。在开始菜单中找到并打开【控制面板】,然后在【控制面板】中选择【管理工具】选项,在【管理工具】选项中选择【数据源(ODBC)】选项,选择后还需要选择【系统DSN】标签用于系统DSN的配置,如图10-2所示。
数据源管理器
图10-2 数据源管理器
  单击【添加】按钮,在弹出的对话框中选择合适的驱动程序,由于这里需要使用DSN连接ACCESS数据库,就需要选择ACCESS数据库的相应的驱动,这里选择【Microsoft Access Driver(*mdb)】选项,如图10-3所示。
创建新数据源
图10-3 创建新数据源
  单击【选择】按钮可以为需要使用数据库的应用程序选择相应的数据库,在选择完成相应的数据库后就能够在应用程序中使用DSN连接该数据源,如图10-4所示。
选择数据源
图10-4 选择数据源
  选择好相应的驱动程序后,系统会弹出【ODBC Microsoft Access安装】对话框并为驱动设置数据源名和说明,如图10-5所示。单击【确定】按钮就完成了数据源的配置,如图10-6所示。
命名数据源
图10-5 命名数据源
数据源配置完毕
图10-6 数据源配置完毕
  当配置完成数据源后,就可以编写.NET应用程序来访问数据源。打开Visual Studio 2008,选择【ASP.NET Web应用程序】选项,如图10-7所示。
创建ASP.NET应用程序
图10-7 创建ASP.NET应用程序
  当创建完成数据源之后,就可以使用OdbcConnection对象连接应用程序和数据库,与连接字串一样,OdbcConnection对象需要使用Open方法才能打开与数据库之间的连接。在使用OdbcConnection对象同样需要使用命名控件System.Data.Odbc,示例代码如下所示。
+展开
-C#
using System.Data.Odbc;

  引用了System.Data.Odbc命名空间后,就可以创建Connection对象进行数据连接,示例代码如下所示。
+展开
-C#
string str = @"DSN=guojing";//使用ODBC数据源
OdbcConnection con = new OdbcConnection(str);//创建OdbcConnection对象
con.Open();//打开数据库连接

  上述代码使用了ODBC数据源,数据源的名称和刚才创建的名称相同,数据库连接字串直接使用“DNS=数据源名称”即可。打开了与数据库的连接后,即可对数据库进行操作,操作方法同样和普通的方法没有区别。如果希望执行查询语句并填充数据集,则需要创建DataAdapter对象和DataSet对象,示例代码如下所示。
+展开
-C#
string strsql = "select * from mytable";
OdbcDataAdapter da = new OdbcDataAdapter(strsql,con);//创建DataAdapter对象
DataSet ds = new DataSet();//创建DataSet
da.Fill(ds, "tablename");//填充数据集

  若需要执行插入、更新、删除等操作,可以使用Command对象执行相应的操作,示例代码如下所示。
+展开
-C#
OdbcCommand cmd = new OdbcCommand("insert into mytable values ('title')",con);
cmd.ExecuteNonQuery();//执行SQL语句

  当需要对其他的数据源执行操作时,在配置DSN时配置其他数据源和数据源驱动程序即可,如图10-8所示。
配置其他数据源
图10-8 配置其他数据源
  使用ODBC配置数据源有一些好处,就是能够为其他类型的数据库配置数据驱动而不用考虑驱动如何进行手动方式连接。

2.使用接字符串进行连接(ACCESS)
  ACCESS数据库是桌面级的数据库,是以一种文件形式保存的数据库。在使用ACCESS数据库时,很多情况下都不能依靠ODBC建立数据驱动来连接数据库,在这种情况下,需要使用连接字符串连接ACCESS数据库,示例代码如下所示。
+展开
-C#
string str = "provider=Microsoft.Jet.OLEDB.4.0 ;
Data Source=D:\ASP.NET 3.5\源代码\第10章\10-1\10-1\acc.mdb";//配置数据库路径

  上述代码使用了Micorsoft.Jet.OLEDB 4.0驱动进行ACCESS数据库的连接。在上述代码中,ACCESS文件的地址为“D:\ASP.NET 3.5\源代码\第10章\10-1\10-1”。但是这样编写代码有若干坏处,最大的坏处就是暴露了物理路径,当非法用户访问或获取代码后,能容易的就能够获取数据库的信息并通过下载工具下载数据库,这样是非常不安全的。为了提高应用程序的安全性,开发人员可以使用Server.MapPath方法指定相对路径,示例代码如下所示。
+展开
-C#
string str = "provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" + Server.MapPath("acc.mdb") + "";

  上述代码指定了数据库的文件,以及相对路径,当acc.mdb与文件夹路径相同时,系统会隐式的补完绝对路径,而不会轻易的暴露物理路径,如果acc.mdb在文件夹的上层路径,则只需要使用“../”来确定相对路径。当指定数据库文件地址后,可以使用Connection对象进行数据库连接操作并使用Open方法打开数据连接,示例代码如下所示。
+展开
-C#
OdbcConnection con = new OdbcConnection(str);//配置连接对象
con.Open();//打开连接

3.使用接字符串进行连接(SQL Server)
  SQL Server数据库可以采用两种不同的连接方式,正如SQL Server Management Studio中注册连接一样,包括Windows安全认证和SQL Server验证两种验证方式,SQL Server Management Studio中注册连接的方式如图10-9所示。
SQL Server的两种连接方式
图10-9 SQL Server的两种连接方式
  当使用Windows安全认证进行数据连接时,SQL Server无需用户提供连接的用户名和密码即可连接,因为Windows安全认证是通过Windows登录时的账号来登录的。开发ASP.NET应用程序时,需要显式的声明这是一个安全的连接,示例代码如下所示。
+展开
-C#
  @" Driver={SQL Server}; Server=(local);Database=mytable;Trusted_Connection=Yes";

  如果需要使用SQL Server验证方式连接数据库,就不能够使用Trusted_Connection属性进行数据连接,而需要配置User=用户名;Password=密码,示例代码如下所示。
+展开
-C#
    @"Driver={SQL Server}; Server=(local);Database=mytable;User ID=sa;Password= ";

加支付宝好友偷能量挖...


评论(0)网络
阅读(147)喜欢(0)Asp.Net/C#/WCF