APP下载

基于.NET框架的MySQL数据库类的教学示范

2021-05-19马玉春吴淑婷汪文彬

电子元器件与信息技术 2021年2期
关键词:字符串数据表数据源

马玉春,吴淑婷,汪文彬

(海南热带海洋学院计算机科学与技术学院,海南 三亚 572022)

0 引言

面向对象编程是一种直观和结构简单的程序设计方法,比较符合人类认识现实世界的思维方式。一般将一个系统分解为若干个对象,这些对象是相对独立的,但又可以相互配合、连接和协调,从而共同完成整个系统所要实现的功能和任务[1]。计算机相关专业的学生在学完面向过程的“C语言程序设计”课程后,要实现面向对象的思维习惯的转变存在一定的困难。

MySQL是最流行的关系型数据库管理系统之一,采用SQL语言访问数据库,通用性比较强,目前使用该数据库的主流公司与组织有Facebook、Github、YouTube、Twitter、PayPal、诺基亚、Spotify、Netflix等。MySQL 软件采用了双授权政策,分为社区版(免费)和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库,高校也经常采用此数据库系统用于教学[2]。文献[3]在Visual Basic Express 2010开发环境下,基于.NET框架实现了一个Access数据库类。MySQL数据库支持远程访问,涉及用户名、密码、端口号和服务器名称(或IP地址)等,更适合属性与方法的表达,因而,本文在文献[3]的基础之上,采用最新版的Visual Studio Community 2019开发环境和新版的.NET框架,使用 Visual Basic语言实现MySQL数据库类MySqlHelper,进行数据库对象的初始化,实现查找、删除、增加和修改记录操作,培养学生的面向对象思维。

1 通过Visual Basic .NET访问MySQL数据库

MySQL数据库驱动程序不是.NET框架的一部分,Visual Basic无法直接操作,需要下载并安装文献[4]中所列的“Connector/NET”驱动程序,这里选择8.0.19版的 Windows安装程序,安装后的路径如下所示,该驱动程序需要使用4.5.2版的.NET框架[2]。

C:Program Files(x86)MySQLMySQL Connector Net 8.0.19Assembliesv4.5.2

新建的VB项目需要添加对MySql.Data.dll 的引用,并在项目中分别导入(Imports)MySql.Data和MySql.Data.MySqlClient两个类,这样才可以使用ADO.NET操作MySQL 数据库。ADO.NET模型中的DataSet是数据的内存驻留表示形式,它提供了独立于数据源的一致关系编程模型[5]。DataSet表示整个数据集,其中包含表、约束和表之间的关系。由于DataSet独立于数据源,因此DataSet可以包含应用程序本地的数据,也可以包含来自多个数据源的数据。与现有数据源的交互通过DataAdapter适配器来控制。DataSet、DataAdapter与数据源之间的关系如图1所示。

图1 DataSet、DataAdapter 和数据源之间的关系

2 主要属性

MySqlHelper类提供的外部可见的只读属性如表1所示,这些属性可以方便地用于数据库操作以及在 DataGridView控件中使用,将数据记录以表格的形式进行浏览和修改。

表1 MySqlHelper 类的可见属性

ds是一个只读属性,表示当前的DataSet对象,其内部定义为DataSet对象_ds. ds属性对象有一个布尔属性 HasChanges,用来判断数据是否变化,该属性可用于自动将ds中变化的数据保存到数据源。

dt是一个只读属性,包含在ds对象中,表示当前的DataTable对象,其内部定义为DataTable对象_dt,该属性对象可用于将数据表绑定到DataGridView控件,从而实现数据表的浏览与修改。

nTables是一个只读属性,表示表的数目。这里一次查询一张表,因而,正常情况下,该属性为1;否则,该属性为0.该属性对应的内部变量为Integer类型的_nTables变量。

对数据库进行编程操作,如果不知道数据表的记录数,往往比较困难。nRecords是一个只读属性,返回数据表的记录数。其实,所谓的记录数只是数据表的行数,因而,调用了Rows集合的Count属性。如果数据表的数目为0,则直接返回0即可。nRecords属性对应的内部变量为Integer类型的_nRecords变量。

3 连接字符串的自动生成

在图1中,MySQL数据库使用MySqlDataAdapter适配器建立D a t a S e t 与数据源之间的连接,在对MySqlDataAdapter对象进行初始化的时候,需要提供查询字符串和连接字符串。查询字符串是一个SELECT语句,告知查询哪一张表,以及如何查询该表;连接字符串根据提供的MySQL数据库服务器的用户名、密码、服务器名称或IP地址、数据库名称等生成的字符串,私有方法GetConnectionString实现这一功能。为了增加MySqlHelper数据库类的通用性,允许客户端从服务器获取公钥,因而参数AllowPublicKeyRetrieval设置为True,不使用SSL连接,因而SslMode设置为MySqlSslMode.None.如果需要增加安全性,则可以修改这两个参数,并对服务器进行相关配置。

4 构造函数和数据表的填充

产生连接字符串的私有方法 GetConnectionString 所使用的参数大部分来自构造函数。为了方便高效开发应用程序,除了数据库名称 dbName 参数外,其它所有参数都有缺省值。

公共方法FillData将数据源中的数据表填充到私有对象_ds和_dt,从而得到表1中所示的外部可见的属性对象ds和dt.如果在填充数据的过程中抛出异常,则将异常信息写入私有字符串变量_strErrorAdapter中,该变量对应表1中的ErrorAdapter属性。有了数据表DataTable对象dt,即可简单地通过dt对象对二维关系表进行修改、添加和删除操作,将在第6节给出应用实例。FillData方法中的私有整型变量_nTables对应表1中的nTables属性。

5 数据源的更新

对dt的操作仅限于内存,公有方法WriteData将内存输入重新写入数据源。调用DataAdapter的Update方法可以将DataSet中的更改解析回数据源。当调用Update方法时,DataAdapter会分析已做的更改并执行相应的命令(INSERT、UPDATE或DELETE)。当DataAdapter遇到对DataRow所做的更改时,它将使用InsertCommand、UpdateCommand或DeleteCommand来处理该更改。这样,程序员就可以通过在设计时指定命令语法并在可能时通过使用存储过程来尽量提高ADO.NET应用程序的性能[5]。

6 教学应用

MySQL数据库类MySqlHelper将用户名、密码、服务器与端口及数据库名称与数据表等诸多属性组合起来,并可以方便地操作数据表,更新数据源。如下第(1)条语句使用缺省参数,传入数据库名称“dbAlarm”生成MySqlHelper对象myData,第(2)条语句通过strQuery参数选择一张需要操作的数据表,第(3)条语句即可通过dt属性增加一条空的记录,第(4)条语句删除第I条记录,第(5)条语句更新第I条记录的“aTime”字段值,最后一条语句将所有数据变化写入数据源。

Visual Basic是快速桌面语言,与MySqlHelper数据库类相结合,可以让学生体会类的设计方法与应用,也可以加深对数据库的理解及熟悉对MySQL数据库的操作,从而为进一步开发基于MySQL数据库的Web应用程序打下基础。

7 结语

MySQL数据库在Web应用程序中使用较多,在国内外许多著名网站中都得到了应用。本文使用最新版的Visual Studio Community 2019免费开发环境,基于.NET框架实现了一个Visual Basic数据库类,可以方便地对MySQL数据库进行操作,从而辅助桌面应用程序的开发。该数据库类可以作为一个面向对象的教学案例,也可直接用于工程项目。

猜你喜欢

字符串数据表数据源
基于文本挖掘的语词典研究
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
基于列控工程数据表建立线路拓扑关系的研究
Web 大数据系统数据源选择*
基于不同网络数据源的期刊评价研究
基于真值发现的冲突数据源质量评价算法
图表
一种新的基于对称性的字符串相似性处理算法
高效的top-k相似字符串查询算法