被认为是世界上最流行的开放源代码数据库的MySQL从最初一个毫不起眼的低成本数据库服务器成长为驱动庞大Web网站和重要商业系统的服务器经历了一个漫长的历程但是如果你是一位ASPNET的开发人员那么你总会碰到一个不如意的地方MySQL原先是为UNIX平台上的应用程序设计的所以对Windows的支持处于次要地位
但是现在Windows版本的MySQL已经具备了与UNIX版本同样的特性和稳定性而且它被认为是用于Windows开发的可行的数据库服务器现在让我们来看看你可以如何使用ODBC在NET框架内连接MySQL数据库
安装
下载和安装Windows版的MySQL安装很简单——只用按照提示你就能够立即安装好并开始运行了如果碰到了问题可以去MySQL的论坛看看寻求帮助和解决方法
要把ASPNET和MySQL连接起来你需要使用ODBCNET一般来说ODBCNET的DataProvider是标准的NET框架(及以上的版本)的一部分所以会和后者一起自动安装好
一旦确认ODBCNET安装完毕你就需要下载用于MySQL的ODBC驱动程序再强调一遍MySQL的开发人员都很乐意提供帮助——他们都在自己的Web网站上提供了这些驱动程序在下载文件的时候你可以看看FAQ文档它会列出在往系统里安装MySQL ODBC驱动程序期间可能碰到的所有的问题
都做好了?现在就让我们从一些代码开始吧
用ASPNET连接MySQL
我最喜欢做的一件事情是阅读而且当我没有编写像本文一样的教学文章时我会找一个安静的角落补全参考书目表不幸的是我不是一个组织性很强的人所以这常常搞得一团糟
那这又与我们今天要谈的话题有什么关系呢?嗯这是我第一个例子的开场白这个例子就是创建一个像列表A里的书籍的数据库
要建立这个表格就要使用下面的SQL查询
CREATE TABLE `books` (
`id` int() NOT NULL auto_increment
`title` varchar() NOT NULL default
`authors` varchar() NOT NULL default
`year_of_publication` year() NOT NULL default
`date_added` date NOT NULL default
PRIMARY KEY(`id`)
) TYPE=MyISAM;
而要执行这个查询就要使用MySQL安装目录下的bin文件夹的命令行客户端软件mysqlexe下面就是具体命令
c:\mysql\bin>mysql u guest p test
Enter password: ******
Welcome to the MySQL monitorCommands end with ; or \g
Your MySQL connection id is to server version: nt
Type help; or \h for help Type \c to clear the buffer
mysql> CREATE TABLE `books` (
> `id` int() NOT NULL auto_increment
> `title` varchar() NOT NULL default
> `authors` varchar() NOT NULL default
> `year_of_publication` year() NOT NULL default
> `date_added` date NOT NULL default
> PRIMARY KEY(`id`)
> ) TYPE=MyISAM;
Query OK rows affected ( sec)
一旦书籍(books)表格创建好了就可以开始插入数据了列表B里列举了一些项目现在用ASPNET做同样的事情——执行SELECT查询(列表C)并在浏览器里显示结果如果一切都没有问题——MySQL服务器在运行MySQL ODBC驱动程序安装正确书籍表格含有数据——你就应该会看到像图A里的页面
educitycn/img_///gif>
现在让我们来更加仔细地看看代码列表所有东西一开始都要调入所需要的NET库由于我正在使用ODBCNET连接MySQL服务器所以需要调用SystemDataOdbc和SystemData程序集一旦程序集调用完毕就要定义连接字符串这包括修改服务器(Server)数据库(Database)uid和pwd变量以体现本地服务器的设置
在创建了OdbcConnection()和OdbcCommand()对象之后初始化本地的OdbcDataReader()对象从书籍表格取回数据这个对象提供了一条ExecuteReader()命令来执行SQL查询剩下的就是例行公事了将OdbcDataReader()指定为dbgooks DataGrid的数据源并调用DataGrid()对象的DataBind()方法将两者绑定起来
当然你可以对数据库做更多的事情——向表格里插入(INSERT)数据使用更新(UPDATE)修改它们用删除(DELETE)命令获得记录的网格或者就根据WHERE语句里面的条件选择子集
异常的处理
现在让我们来看一些异常的处理(列表D)方法以对付程序员经常碰到的一些无法预见的状况正如你会注意到的列表D使用了嵌套trycatch结构来提供多级别的错误处理下面列出来的一段代码应该有助于你更好地理解它
<% try {try { } catch (OdbcException e) {} catch (Exception e) { } finally { } } catch (OdbcException e) { } catch (Exception e) {
}%>
现在首先让我们看看里层的trycatch结构这个结构用来处理创建OdbcCommand()或者OdbcDataReader()对象的实例时可能发生的错误如果数据库里不存在书籍表格就有可能发生这样的错误如果发生了这样的错误catch部分就会发出一个新的Exception()里层的trycatch结构的finally块然后就会在脚本进一步执行之前关闭OdbcConnection()对象
动作然后就转到外层的trycatch结构外层的结构能够处理两种类型的异常——OdbcException()或者是一般的Exception()前者在由于某种原因无法打开到数据库服务器的连接或者脚本无法将OdbcConnection()对象实例化的时候产生而后者用来处理内层trycatch结构所产生的异常无论发生两种情况中的哪一种都会有一个ASPNET标签服务器控件向用户显示相应的错误消息
图B向你显示当脚本尝试连接到一个不存在的数据库服务器时所发生的事情(这个由外层的trycatch结构来处理)
educitycn/img_///gif>
图C向你显示的错误信息会在脚本尝试访问一个不存在的数据库表格时出现(要注意内层trycatch结构产生的异常会由外层结构来处理)
educitycn/img_///gif>
以上就是关于如何使用MySQL和ASPNET的DataGrid服务器控件的介绍关于你可以如何使用这两种技术还有更多的内容可谈所以我希望本文和上面提供的其他参考资源能够帮助你对此有个初步的了解