《C#程序设计教程(第2版) 第10章 C#数据库操作ppt课件.ppt》由会员分享,可在线阅读,更多相关《C#程序设计教程(第2版) 第10章 C#数据库操作ppt课件.ppt(58页珍藏版)》请在三一办公上搜索。
1、第10章 C#的数据库操作,内容提要: 数据库的概念 Access数据库、SQL常用语句 ADO.NET编程目的要求: 理解数据库的概念 掌握Access数据库的用法 能够进行ADO.NET编程重点难点: ADO.NET编程,10.1 Access 数据库 “数据库管理系统DBMS”(database management system)则是用来操作与管理数 据库的软件,Microsoft Access、Microsoft SQL Server、Oracle都是属于DBMS软件,通过这些软件,用户可以对数据进行定义、创建与运 算,其中“定义”(define)是指明数据的类型、 结构及其相关限制
2、,“创建”(construct)是输 入并保存数据,而“运算”(manipulate)则包 括查询、更新、插入、删除、产生报表等操作。,10.1.1 建立Access数据库表,1. 打开空白数据库 (1) 选按“开始”|“程序”|“Microsoft Access”,启动Access,然后单击菜单“文件”|“新建”,屏幕上会出现如图所示的“新建文件”面板,在该面板中点取“空数据库”。,打开空白数据库,(2)出现“文件新建数据库”对话框,如图所示,指定新数据库的保存位置、文件名,然后按“创建”。在此,将新数据库存放在“我的文档”内,文件名称为“Friend”,文件夹型为“Microsoft Of
3、fice Access数据库”。,保存空白数据库,定义各个表的字段名称与数据类型(1)出现如图所示的窗口,在“使用设计器创建表”上双击。,使用设计器创建表,(2)在“字段名称”字段输入表第一个字段名称(在此为“编号”),然后在“数据类型”字段的下拉式列表框中选取这个字段的数据类型(在此为“数字”),再于“说明”字段输入这个字段的描述文字,如图所示。,设置字段,(3)依照图所示输入八个字段、数据类型及说明。,具体设置字段,(4)接下来要指定主键,选择“编号”字段,按一下工具栏的“主键”按钮,或单击鼠标右键,在弹出的快捷菜单中选择“主键”,随即会看到“编号”字段旁多了一个钥匙符号,表示“编号”字段
4、为主键,然后点取“关闭”按钮,此时,Access会询问是否要保存表,点击“是”。,设置主键,(5)在“另存为”对话框的“表名称”字段输入表的名称(在此为“俱乐部”),然后单击“确定”按钮,如图所示。,保存表,(6)“数据库”窗口中增加了如图的“俱乐部”表。,“俱乐部”表,(1)在“俱乐部”表按一下鼠标右键,然后选择“打开”。(2)依照图10-9所示输入20条记录,输入完毕之后,单 击 “关闭”按钮,Access会自动保存。,3. 输入表的数据,“俱乐部”表的记录,10.1.2 Access数据库操作 1. 创建新数据库项目 利用Visual C#的编程向导创建一个新项目,设计名为: Frien
5、d。如图所示。,创建新项目Friend,2. 创建数据库连接 对数据库的操作首先要和数据库建立一个连接,与数据库建立连接可以通过系统提供的控件实现,具体步骤如下: (1)打开工具箱中的“数据”卷展栏。如图所示。,工具箱中的“数据”卷展栏,(2)选择“DataGridView”组件按钮,并将其拖动到应 用程序窗口上,将弹出“DataGridView任务”菜 单,如图所示。这个向导将指导编程人员一步步 地完成对数据库的连接操作。,“DataGridView任务”菜单,(3)展开“DataGridView任务”菜单的“选择数据源”列 表,选择“添加项目数据源”,如果以前已建好数 据库的连接,可以直接
6、单击“选择数据源”列表中 已建好的连接的选项。如果还没有建好的连接, 可以通过单击“添加项目数据源”按钮建立新的连 接。,(4)在弹出的“数据源配置向导”对话框中选择数据源 类型“数据库”,单击“下一步”按钮。,(5)在“数据源配置向导”对话框中单击“新建连接”,如图所示。,“数据源配置向导”对话框中选择数据连接,(6)弹出“添加连接”对话框,见图所示,首先查看数据源类型是否需要更改,若要更改,单击“更改”按钮。弹出“更改数据源”对话框,见图所示,在 其对话框中选择你所需要的数据源,然后单击“确定”按钮。,“添加连接”对话框,“更改数据源”对话框,(7)在“添加连接”对话框中,用户既可以通过在
7、“数据 库名称”文本输入框中直接输入所用数据库文件的绝对 路径,也可以通过单击“ 数据库名称 ”文本输入框右边 的“ 浏览 ”按钮找到所要访问的数据库绝对路径从而完 成数据库访问路径设置。,(8)单击“下一步”,接着在“数据源配置向导”对话框中 选择数据库对象,(9)单击“完成”按钮。返回到“DataGridView任务”菜 单,可以对其它内容进行设置,如“编辑列”、“添加 列”等。(10)在应用程序窗口显示如图所示。,应用程序窗口显示结果,(11)调试程序,运行结果如图所示。,数据库信息显示,10.1.3 SQL语言简介及常用的SQL命令 SQL(Structured Query Lanua
8、ge,结构化查询语言)是现代关系数据库的标准语言。现在的大多数数据库系统都采用SQL语言作为共同的数据存取语言和标准接口,使不同数据库系统之间的互操作成为了可能。 如果要使用SQL编写程序,则需要另一语言或平台来实现所有实际信息的显示。 SQL语言的功能极为强大,语言十分简捷,现在介绍常用的4个命令。,1.SELECT命令(查询命令)格式:SELECT |* FROM 功能:对数据库中的数据进行查询。,例如:SELECT * FROM STU1,语句:SELECT 学号,姓名,数学 FROM STU1,语句:SELECT 学号,数学+5 FROM STU1,WHERE关键字在WHERE子句中,
9、用条件表达式来确定要显示的记录。 WHERE ,例如:SELECT 学号,姓名 FROM STU1 WHERE 数学=90,SELECT 学号,姓名 FROM STU1 WHERE 数学 =90 OR 平均分=85,BETWEEN关键字在WHERE子句中可以使用BETWEEN来指定可接受值的范围。例如:要显示学生档案表STU2中数学成绩在91到92的学生情况。SELECT * FROM STU2 WHERE 数学 BETWEEN (91) AND(92),LIKE关键字,格式: WHERE LIKE 说明:字符串常量中的字符可以包含如下两个特殊符号: % 表示任意长度的字符串; _ 表示任意一
10、个字符例:查询所有姓 “张”的学生的学号和姓名。 SELECT 学号,姓名 FROM 学生表 WHERE 姓名 LIKE 张%例: 查询第二个汉字是“红”的学生的学号和姓名 SELECT 学号,姓名 FROM 学生表 WHERE 姓名 LIKE _红%,IN关键字 在WHERE子句中使用IN可以指定值是否在表中。例如:显示学号为 962102 和962104 的记录。SELECT * FROM STU2 WHERE 学号 in (“962102”,“962104”),ORDER BY关键字 ORDER BY ASC|DESC子句用来对数据结果排序,ASC按升序排列,DESC按降序排列,默认是A
11、SC。如: SELCET * FROM STU1 WHERE 数学 IN(78,92,91),其结果按原记录顺序显示,要安数学成绩排序,需加上ORDER BY 子句。如下例:,SELECT * FROM STU1 WHERE 数学 IN(78,92,91) ORDER BY 数学,2. INSERT命令(插入命令)格式:INSERT INTO (字段列表) VALUE (数据列表)功能:插入一条新记录,其内容是将VALUE后(数据列表)中的数据依次送到(字段列表) 中的各字段。,如:INSERT INTO STU1 (学号,姓名,计算机基础,数学,马列原理,体育,总分,平均分)VALLUE (
12、962105, 李小丽,77,88,90,80.2),3. UPDATE命令(更新命令)格式:UPDATE SET ,=WHERE 例如:UPDATE STU2 SET 就读方式统招,UPDATE STU1 SET 计算机基础计算机基础1.15%,4.DELETE命令(删除命令)格式:DELETE FROM 表文件名 WHERE 表达式如:DELETE FROM STU2 WHERE 性别= 女,10.2 客户/服务器(C/S)模式编程 在网络应用中,应用模式的发展变化,可以按出现的时间次序为: (1) 文件服务器模式及域模式 (2) 客户机/服务器模式(client/server)模式(以下
13、简称为C/S模式) (3) 以Internet/Intranet为网络环境的B/S(Browser/Server)模式 (4) 电子商务的B2B模式和B2C模式 其中文件服务器模式及域模式主要是从对用户和资源管理角度考虑的,数据计算发生在每个用户的工作站上。而B/S模式是C/S模式在Internet环境下的新的体现方式。电子商务则事从网络应用领域这一角度而言的。,从最典型的数据库管理系统的应用来看,在LAN上采取的C/S模式,即指在LAN中至少有一台数据库服务器(DBMS server),可以作为希望去存取公共数据库的各台工作站的后援支持。把应用任务中的程序执行内容划分成两部分:与数据库存取有
14、关的部分由DBMS server承担,与应用的人机界面处理,输入/输出或一部分应用的逻辑功能等有关的内容由client端工作站承担。,10.3 ADO.NET概念 无论什么样的程序,都要与数据打交道,现在的程序中要处理的信息量越来越大,早已不能满足几个变量所提供的信息量,而是把大量信息预先存储到数据库文件中,然后利用某种技术读取数据库中的预存信息,将读取的信息送给程序界面显示出来,或将新内容存入数据库。ADO.NET就是就是负责数据存取的对象。,10.4 ADO.NET对象 10.4.1 Connection对象 Connection对象用于连接数据库。不同的数据库有不同的 Connectio
15、n对象。对于Access数据库的Connection对象主要是 OleDbConnection对象,它的主要功能是负责数据库的连接。 在连接到数据库时必须提供连接到数据库的一些属性,如: Provider、DataSource等。 例:OleDbConnection myconn=new OleDbconection(“Provider= Microsoft.Jet.OLEDB.4.0;Data Source=f:test.mdb”);,例: OleDbConnection myconn=new OleDbconection(“Provider=Microsoft.Jet.OLEDB.4.0;
16、Data Source=f:test.mdb”); 字符串太长,可以改写成如下两条命令: string strCon=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:test.mdb”); OleDbConnection myconn=new OleDbconection(strCon); OleDbconection的两个重要方法: Open( ) 方法:打开与数据库表的连接 例:myconn.Open( ); Close( )方法: 关闭与数据库表的连接 例:myconn.Close( ),例: private void button1_Cl
17、ick(object sender, System.EventArgs e) try string strCon=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:book.mdb; OleDbConnection myConn=new OleDbConnection(strCon); myConn.Open(); MessageBox.Show(数据库连接成功!); myConn.Close(); catch MessageBox.Show(连接错误,错误); ,例: public void GetConnected() trystring str
18、Con=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:Book.mdb; OleDbConnection myConn=new OleDbConnection(strCon); string strCom=SELECT * FROM book; this.myDataSet=new DataSet(); myConn.Open(); MessageBox.Show(连接成功!); OleDbDataAdapter myCommand=new OleDbDataAdapter(strCom,myConn); myCommand.Fill(myDat
19、aSet,book); myConn.Close(); catch(Exception e) MessageBox.Show(连接错误!+e.ToString(),错误); private void button1_Click(object sender, System.EventArgs e) GetConnected(); dataGrid1.DataSource=myDataSet.Tablesbook; ,10.4.2 OleDbCommand对象 OleDbCommand对象主要用来执行包括添加数据、删除数据、修改数据以及查询数据的操作的命令对象。例: OleDbCommand in
20、st=new OleDbCommand(“DELETE FROM book WHERE id=1002”, myConnection1);SQL命令的执行一般用ExecuteNonQuery( )方法。 ExecuteNonQuery( )方法: 执行 不返回结果的SQL 语句,常用于记录 的插入、删除、更新等操作。 例:inst. ExecuteNonQuery( ); /应先把连接打开,10.4.3 DataAdapter(数据适配器)对象 用于在数据源和数据集之间交换数据。 .NET提供两种主要的数据适配器以供数据库一起使用: (1)OleDbDataAdapter控件 (2)SqlDa
21、taAdapter控件 由于我们使用Access建立数据库,因此主要用到OleDbDataAdapter控件。 OleDbDataAdapter对象使用Fill()方法将数据从数据源装载到数据集中。 格式: OleDbDataAdapter 对象名=new OleDbDataAdapter(SQL命令,连接名 );,例:/ 创建一个和数据库的连接 /SQL命令字符串 string strCom=“SELECT * FROM 世界杯”; /创建一个数据集 DataSet myDataSet=new DataSet(); /用 OleDbDataAdapter得到一个数据集 OleDbDataAd
22、apter da=new OleDbDataAdapter(strCom, myConn); /把DataSet绑定世界杯数据表 da.Fill(myDataSet, “世界杯”); ,10.4.4 DataAdapter(数据适配器)对象 它的作用主要是在数据库与DataSet对象之间传递数据。例如:在Command对象发出查询命令后,将获取的数据放入DataSet对象中。 .NET Framework提供两种主要的数据适配器以供与数据库一起使用。,(1)OleDbDataAdapter,它适用于由OLE DB提供程 序公开的任何数据源。(2)SqlDataAdapter,它适用于SQL S
23、erver。由于该 对象不必通过OLE DB层,所以它比OleDbDataAdapter 快,但它只能用于SQL Server 7.0或更高版本。 由于我们使用Access建立数据库,因此用OleDbDataAdapter控件。 OleDbDataAdapter对象使用Fill()方法将数据从数据源装载到数据集中。 格式: OleDbDataAdapter 对象名=new OleDbDataAdapter(SQL命 令,连接名 );,10.4.5 DataSet对象 当向数据库申请数据时,系统建立数据集和数据库之间的连接。 ADO.NET向编程人员所提供的数据集对象是DataSet。 Data
24、Set对象是一个数据集,主要用来存放从数据库中取回的数据。 命令格式:DataSet 对象名=new DataSet(); 例: DataSet myDataSet=new DataSet();,数据集是包含数据表的集合,数据表包含数据行和列的集合,即DataSet对象包含数据表的集合Tables,而DataTable对象包含数据行的集合Rows、数据列的集合Columns。因此可以直接使用这些对象访问数据集中的数据。 例: textBox1.Text=myDataSet.Tables0.Rows3.ItemArray1.ToString();,ADO.NET编程过程一般可以分为五步: (1)
25、与数据库建立连接(创建Connection对象) 如果用OleDbConnection命令建立连接,应加入如下代码: using System.Data.OleDb; 连接的两个重要方法: Open()方法 Close()方法 例: string strCon=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:book.mdb”);OleDbConnection myconn=new OleDbconection(strCon);myconn().Open();Myconn().Close(); (2)执行SQL命令(创建Command对象) SQ
26、L命令主要有SELECT、INSERT、UPDATE、DELETE。,(3)数据集编程(创建DataSet对象) 在ADO.NET中,建立连接后就需要使用数据命令打包SQL语句或存储过程。数据集就是临时存储从数据库检索的记录,是从数据源检索的记录的缓存,数据集中可包含一个或多个表,这些表基于实际数据库中的表。 因为数据集实际上是数据库的私有副本,所以它不一定反映数据库的当前状态。如果想要查看其他用户进行的最新更改,可以通过调用适当的Fill()方法刷新数据集。 (4)数据绑定(创建DataAdapter) Windows窗体的数据绑定便于在窗体控件中显示数据,如果使用DataGrid控件,则需
27、要使用DataGrid控件进行绑定。主要通过Fill()方法。 (5) 用户界面 即将数据库内容显示给用户并可进行修改的界面。,例:,其中窗体的“Load”事件代码为:private void Form1_Load(object sender, System.EventArgs e) try string strCon=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:书.mdb; OleDbConnection myConn=new OleDbConnection(strCon); string strCom=SELECT * FROM book
28、 order by 编号 ; myConn.Open();OleDbDataAdapter myCommand=new OleDbDataAdapter(strCom,myConn); myDataSet=new DataSet(); myCommand.Fill(myDataSet,book); this.dataGrid1.DataSource=this.myDataSet.Tablesbook; myConn.Close(); catch(Exception x) MessageBox.Show(“错误!”+x.ToString(), “error”); ,其中“查询”按钮的“单击”事件
29、代码为:private void button1_Click(object sender, System.EventArgs e) trystring strCon=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:书.mdb;OleDbConnection myConn=new OleDbConnection(strCon); myConn.Open(); string strCom=“SELECT * FROM book WHERE 书名 Like %+this.textBox1.Text+%; OleDbDataAdapter myCommand=new OleDbDataAdapter(strCom,myConn); this.myDataSet.Clear(); myCommand.Fill(myDataSet,book); myConn.Close();catch(Execption x) MessageBox.Show(“错误!”+x.ToString(), “error”); ,本章作业: 1. 习题10的12。,实验报告: 实验九,