第10章C#的数据库操作内容提要:数据库的概念Access数据库、SQL常用语句ADO.NET编程目的要求:理解数据库的概念掌握Access数据库的用法能够进行ADO.NET编程重点难点:ADO.NET编程10.1Access数据库“数据库管理系统DBMS”(databasemanagementsystem)则是用来操作与管理数据库的软件,MicrosoftAccess、MicrosoftSQLServer、Oracle都是属于DBMS软件,通过这些软件,用户可以对数据进行定义、创建与运算,其中“定义”(define)是指明数据的类型、结构及其相关限制,“创建”(construct)是输入并保存数据,而“运算”(manipulate)则包括查询、更新、插入、删除、产生报表等操作。10.1.1建立Access数据库表1.打开空白数据库(1)选按“开始”|“程序”|“MicrosoftAccess”,启动Access,然后单击菜单“文件”|“新建”,屏幕上会出现如图所示的“新建文件”面板,在该面板中点取“空数据库”。打开空白数据库(2)出现“文件新建数据库”对话框,如图所示,指定新数据库的保存位置、文件名,然后按“创建”。在此,将新数据库存放在“我的文档”内,文件名称为“Friend”,文件夹型为“MicrosoftOfficeAccess数据库”。保存空白数据库2.定义各个表的字段名称与数据类型(1)出现如图所示的窗口,在“使用设计器创建表”上双击。使用设计器创建表(2)在“字段名称”字段输入表第一个字段名称(在此为“编号”),然后在“数据类型”字段的下拉式列表框中选取这个字段的数据类型(在此为“数字”),再于“说明”字段输入这个字段的描述文字,如图所示。设置字段(3)依照图所示输入八个字段、数据类型及说明。具体设置字段(4)接下来要指定主键,选择“编号”字段,按一下工具栏的“主键”按钮,或单击鼠标右键,在弹出的快捷菜单中选择“主键”,随即会看到“编号”字段旁多了一个钥匙符号,表示“编号”字段为主键,然后点取“关闭”按钮,此时,Access会询问是否要保存表,点击“是”。设置主键(5)在“另存为”对话框的“表名称”字段输入表的名称(在此为“俱乐部”),然后单击“确定”按钮,如图所示。保存表(6)“数据库”窗口中增加了如图的“俱乐部”表。“俱乐部”表(1)在“俱乐部”表按一下鼠标右键,然后选择“打开”。(2)依照图10-9所示输入20条记录,输入完毕之后,单击“关闭”按钮,Access会自动保存。3.输入表的数据“俱乐部”表的记录10.1.2Access数据库操作1.创建新数据库项目利用VisualC#的编程向导创建一个新项目,设计名为:Friend。如图所示。创建新项目Friend2.创建数据库连接对数据库的操作首先要和数据库建立一个连接,与数据库建立连接可以通过系统提供的控件实现,具体步骤如下:(1)打开工具箱中的“数据”卷展栏。如图所示。工具箱中的“数据”卷展栏(2)选择“DataGridView”组件按钮,并将其拖动到应用程序窗口上,将弹出“DataGridView任务”菜单,如图所示。这个向导将指导编程人员一步步地完成对数据库的连接操作。“DataGridView任务”菜单(3)展开“DataGridView任务”菜单的“选择数据源”列表,选择“添加项目数据源”,如果以前已建好数据库的连接,可以直接单击“选择数据源”列表中已建好的连接的选项。如果还没有建好的连接,可以通过单击“添加项目数据源”按钮建立新的连接。(4)在弹出的“数据源配置向导”对话框中选择数据源类型“数据库”,单击“下一步”按钮。(5)在“数据源配置向导”对话框中单击“新建连接”,如图所示。“数据源配置向导”对话框中选择数据连接(6)弹出“添加连接”对话框,见图所示,首先查看数据源类型是否需要更改,若要更改,单击“更改”按钮。弹出“更改数据源”对话框,见图所示,在其对话框中选择你所需要的数据源,然后单击“确定”按钮。“添加连接”对话框“更改数据源”对话框(7)在“添加连接”对话框中,用户既可以通过在“数据库名称”文本输入框中直接输入所用数据库文件的绝对路径,也可以通过单击“数据库名称”文本输入框右边的“浏览”按钮找到所要访问的数据库绝对路径从而完成数据库访问路径设置。(8)单击“下一步”,接着在“数据源配置向导”对话框中选择数据库对象(9)单击“完成”按钮。返回到“DataGridView任务”菜单,可以对其它内容进行设置,如“编辑列”、“添加列”等。(10)在应用程序窗口显示如图所示。应用程序窗口显示结果(11)调试程序,运行结果如图所示。数据库信息显示10.1.3SQL语言简介及常用的SQL命令SQL(StructuredQueryLanuage,结构化查询语言)是现代关系数据库的标准语言。现在的大多数数据库系统都采用SQL语言作为共同的数据存取语言和标准接口,使不同数据库系统之间的互操作成为了可能。如果要使用SQL编写程序,则需要另一语言或平台来实现所有实际信息的显示。SQL语言的功能极为强大,语言十分简捷,现在介绍常用的4个命令。1.SELECT命令(查询命令)格式:SELECT字段列表|*FROM表名[……]功能:对数据库中的数据进行查询。例如:SELECT*FROMSTU1语句:SELECT学号,姓名,数学FROMSTU1语句:SELECT学号,数学+5FROMSTU1WHERE关键字在WHERE子句中,用条件表达式来确定要显示的记录。•••WHERE条件表达式例如:SELECT学号,姓名FROMSTU1WHERE数学=90SELECT学号,姓名FROMSTU1WHERE数学=90OR平均分=85BETWEEN关键字在WHERE子句中可以使用BETWEEN来指定可接受值的范围。例如:要显示学生档案表STU2中数学成绩在91到92的学生情况。SELECT*FROMSTU2WHERE数学BETWEEN(91)AND(92)LIKE关键字格式:……WHERE字段名LIKE字符串常量说明:字符串常量中的字符可以包含如下两个特殊符号:%表示任意长度的字符串;_表示任意一个字符例:查询所有姓“张”的学生的学号和姓名。SELECT学号,姓名FROM学生表WHERE姓名LIKE‘张%’例:查询第二个汉字是“红”的学生的学号和姓名SELECT学号,姓名FROM学生表WHERE姓名LIKE‘_红%’IN关键字在WHERE子句中使用IN可以指定值是否在表中。例如:显示学号为962102和962104的记录。SELECT*FROMSTU2WHERE学号in(“962102”,“962104”)ORDERBY关键字ORDERBY排序字段名[ASC|DESC]子句用来对数据结果排序,ASC按升序排列,DESC按降序排列,默认是ASC。如:SELCET*FROMSTU1WHERE数学IN(78,92,91)其结果按原记录顺序显示,要安数学成绩排序,需加上ORDERBY排序字段名子句。如下例:SELECT*FROMSTU1WHERE数学IN(78,92,91)ORDERBY数学2.INSERT命令(插入命令)格式:INSERTINTO表文件名(字段列表)VALUE(数据列表)功能:插入一条新记录,其内容是将VALUE后(数据列表)中的数据依次送到(字段列表)中的各字段。如:INSERTINTOSTU1(学号,姓名,计算机基础,数学,马列原理,体育,总分,平均分)VALLUE(‘962105’,‘李小丽’,77,88,90,80.2)3.UPDATE命令(更新命令)格式:UPDATE表文件名SET字段名1=表达式1[,字段名2=表达式1……][WHERE条件表达式]例如:UPDATESTU2SET就读方式=‘统招’UPDATESTU1SET计算机基础=计算机基础*1.15%4.DELETE命令(删除命令)格式:DELETEFROM<表文件名>WHERE<表达式>如:DELETEFROMSTU2WHERE性别=‘女’10.2客户/服务器(C/S)模式编程在网络应用中,应用模式的发展变化,可以按出现的时间次序为:(1)文件服务器模式及域模式(2)客户机/服务器模式(client/server)模式(以下简称为C/S模式)(3)以Internet/Intranet为网络环境的B/S(Browser/Server)模式(4)电子商务的B2B模式和B2C模式其中文件服务器模式及域模式主要是从对用户和资源管理角度考虑的,数据计算发生在每个用户的工作站上。而B/S模式是C/S模式在Internet环境下的新的体现方式。电子商务则事从网络应用领域这一角度而言的。从最典型的数据库管理系统的应用来看,在LAN上采取的C/S模式,即指在LAN中至少有一台数据库服务器(DBMSserver),可以作为希望去存取公共数据库的各台工作站的后援支持。把应用任务中的程序执行内容划分成两部分:与数据库存取有关的部分由DBMSserver承担,与应用的人机界面处理,输入/输出或一部分应用的逻辑功能等有关的内容由client端工作站承担。10.3ADO.NET概念无论什么样的程序,都要与数据打交道,现在的程序中要处理的信息量越来越大,早已不能满足几个变量所提供的信息量,而是把大量信息预先存储到数据库文件中,然后利用某种技术读取数据库中的预存信息,将读取的信息送给程序界面显示出来,或将新内容存入数据库。ADO.NET就是就是负责数据存取的对象。10.4ADO.NET对象10.4.1Connection对象Connection对象用于连接数据库。不同的数据库有不同的Connection对象。对于Access数据库的Connection对象主要是OleDbConnection对象,它的主要功能是负责数据库的连接。在连接到数据库时必须提供连接到数据库的一些属性,如:Provider、DataSource等。例:OleDbConnectionmyconn=newOleDbconection(“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\test.mdb”);例:OleDbConnectionmyconn=newOleDbconection(“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\test.mdb”);字符串太长,可以改写成如下两条命令:stringstrCon=“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\test.mdb”);OleDbConnectionmyconn=newOleDbconection(strCon);OleDbconection的两个重要方法:Open()方法:打开与数据库表的连接例:myconn.Open();Close()方法:关闭与数据库表的连接例:myconn.Close()例:privatevoidbutton1_Click(objectsender,System.EventArgse){try{stringstrCon=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=F:\\book.mdb;OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();MessageBox.Show(数据库连接成功!);myConn.Close();}catch{MessageBox.Show(连接错误,错误);}}例:publicvoidGetConnected(){try{stringstrCon=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=F:\\Book.mdb;OleDbConnectionmyConn=newOleD