




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章 C#的数据库操作,ADO.NET向编程人员提供了功能强大的数据访问能力,既可以直接在编程模式下通过输入程序代码设计数据访问程序,也可以利用系统提供的数据访问向导直接进行可视化程序设计。,9.1 Access数据库 数据库(Database,即DB)是存储在一起的相关数据的集合,是存储数据的“仓库”。是指依照一定格式存放在一起的数据记录文件。 。 数据库中的信息是以表的形式组成的,一个数据库中可以放多个表,各个表具有行和列。 “数据库管理系统DBMS”(database management system)则是用来操作与管理数据库的软件,Microsoft Access、Microsoft SQL Server、Oracle都是属于DBMS软件,通过这些软件,用户可以对数据进行定义、创建与运算。,9.1.1 建立Access数据库表 选按“开始”|“程序”|“Microsoft Access”,启动Access,屏幕上会出现如图9-1所示的对话框,在任务窗格内点取“空Access数据库”,然后单击“确定”按钮。 出现“文件新建数据库”对话框,指定新数据库的保存位置、文件名,然后按“创建”。在此,将新数据库存放在“我的文档”内,文件名称为“Friend”,文件夹型为Microsoft Access数据库。,信息中心专门人才基本情况表,9.1.1 建立Access数据库表 选按“开始”|“程序”|“Microsoft Access”,启动Access,屏幕上会出现对话框,在任务窗格内点取“空Access数据库”,然后单击“确定”按钮。 出现“文件新建数据库”对话框,指定新数据库的保存位置、文件名,然后按“创建”。 Microsoft Access创建的数据库文件的扩展名是.mdb。,9.1.2 Access数据库操作 1. 创建新数据库项目 2. 创建数据库连接 对数据库的操作首先要和数据库建立一个连接,与数据库建立连接可以通过系统提供的控件实现。 3. 创建数据库对象和访问方法 4设置程序显示界面 5. 显示数据库中的数据,9.2 客户/服务器(C/S)模式编程概念 在网络应用中,应用模式的发展变化,可以按出现的时间次序分为: (1) 文件服务器模式及域模式 (2) 客户机/服务器模式(client/server)模式(以下简称为C/S模式) (3) 以Internet/Intranet为网络环境的B/S(Browser/Server)模式 (4) 电子商务的B2B模式和B2C模式 其中文件服务器模式及域模式主要是从对用户和资源管理角度考虑的,数据计算发生在每个用户的工作站上。而B/S模式是C/S模式在Internet环境下的新的体现方式。,20世纪90年代以来, C/S模式得到了十分迅速的流行。它主要从一次数据计算的完成过程这个角度而言的,客户机进行数据请求,请求传到服务器,服务器负责完成数据计算或数据库操作,最终结果返回到客户机。几乎每个新的网络操作系统和每个新的多用户数据库系统都声称能支持C/S模式。实现C/S模式允许有许多不同的策略。 从最典型的数据库管理系统的应用来看,在LAN上采取的C/S模式,即指在LAN中至少有一台数据库服务器(DBMS server),可以作为希望去存取公共数据库的各台工作站的后援支持。把应用任务中的程序执行内容划分成两部分:与数据库存取有关的部分由DBMS server承担,与应用的人机界面处理,输入/输出或一部分应用的逻辑功能等有关的内容由client端工作站承担。,SQL语言简介 SQL(Structured Query Lanuage,结构化查询语言)是现代关系数据库的标准语言。现在的大多数数据库系统都采用SQL语言作为共同的数据存取语言和标准接口,使不同数据库系统之间的互操作成为了可能。 SQL语言的功能极为强大,语言十分简捷,第321页的表13-1列出了SQL语言的9个命令,这9个命令就可以完成几乎所有的数据操作,在这9个命令中,常用的只有4个。,如果要使用SQL编写程序,则需要另一语言或平台来实现所有实际信息的显示。,例如:SELECT * FROM STU1,语句:SELECT 学号,姓名,数学 FROM STU1,语句:SELECT 学号,数学+5 FROM STU1,WHERE关键字 在WHERE子句中,用条件表达式来确定要显示的记录。 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 说明:字符串常量中的字符可以包含如下两个特殊符号: % 表示任意长度的字符串; _ 表示任意一个字符 例: 查询所有姓 “张”的学生的学号和姓名。 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按降序排列,默认是ASC。 如: 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 (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 性别= 女,9.3 ADO.NET编程 无论什么样的程序,都要与数据打交道,现在的程序中要处理的信息量越来越大,早已不能满足几个变量所提供的信息量,而是把大量信息预先存储到数据库文件中,然后利用某种技术读取数据库中的预存信息,将读取的信息送给程序界面显示出来,或将新内容存入数据库。ADO.NET就是就是负责数据存取的对象。,9.3.1 ADO.NET的概念 在应用程序中访问数据库的一般过程为:首先必须连接数据库;接着发出SQL语句,告诉数据库要进行什么样的工作;最后由数据库返回所需的数据记录。 在ADO.NET中,上述访问数据库的三项工作,分别由三个对象来完成:Connection对象负责连接数据库;Command对象对数据下达SQL命令;DataSet对象用来保存所查询到的数据记录。 在ADO.NET中,介于DataSet和Connection对象之间,还有一个在数据库与DataSet对象之间扮演传递数据的对象DataAdapter(适配器)。此外,还有一个DataView对象,该对象提供了对DataSet对象内的表进行排序、过滤记录及记录搜索等功能。,数据集组件(DataSet控件) 当向数据库申请数据时,系统建立数据集和数据库之间的连接。 ADO.NET向编程人员所提供的数据集组件是DataSet。 DataSet控件是一个数据集,主要用来存放从数据库中取回的数据。 命令格式:DataSet 对象名=new DataSet(); 例: DataSet myDataSet=new DataSet();,数据适配器组件 用于在数据源和数据集之间交换数据。 .NET提供两种主要的数据适配器以供数据库一起使用: (1)OleDbDataAdapter控件 (2)SqoDataAdapter控件 由于我们使用Access建立数据库,因此主要用到OleDbDataAdapter控件。 OleDbDataAdapter对象使用fill()方法将数据从数据源装载到数据集中,使用Update()方法将数据集中的数据返回到数据源中。 格式: OleDbDataAdapter 对象名=new OleDbDataAdapter(SQL命令,连接名 );,例:/ 创建一个和数据库的连接 /SQL命令字符串 string strCom=“SELECT * FROM 世界杯”; /创建一个数据集 DataSet myDataSet=new DataSet(); /用 OleDbDataAdapter得到一个数据集 OleDbDataAdapter da=new OleDbDataAdapter(strCom, myConn); /把DataSet绑定世界杯数据表 da.Fill(myDataSet, “世界杯”); da.Update(myDataSet, “世界杯”);,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;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_Click(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() try string strCon=“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(myDataSet,“book“); myConn.Close(); catch(Exception e) MessageBox.Show(“连接错误!“+e.ToString(),“错误“); private void button1_Click(object sender, System.EventArgs e) GetConnected(); dataGrid1.DataSource=myDataSet.Tables“book“; ,9.3.3 ADO.NET编程及绑定 1. 数据集编程 在ADO.NET中,建立连接后就需要使用数据命令打包SQL语句或存储过程。如果是使用SELECT语句查询数据库,调用命令的执行方法后将返回查询结果,同时将数据缓存到数据集中,用户可使用数据集获取这些行;如果是调用Update命令,则将返回所影响的行数;其他类型的命令将返回一个错误代码。,在ADO.NET中,数据集就是临时存储从数据库检索的记录,是从数据源检索的记录的缓存,数据集中可包含一个或多个表,这些表基于实际数据库中的表。 因为数据集实际上是数据库的私有副本,所以它不一定反映数据库的当前状态。如果想要查看其他用户进行的最新更改,可以通过调用适当的Fill()方法刷新数据集。 SQL命令主要有SELECT、INSERT、UPDATE、DELETE。,2. 数据绑定 Windows窗体的数据绑定便于在窗体控件中显示数据,如果使用DataGrid控件,则需要使用DataGrid控件进行绑定。主要通过Fill()方法。,例:,其中窗体的“Load”事件代码为: private void Form1_Load(object sender, System.EventArgs e) try string strCon=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:book.mdb“; OleDbConnection myConn=new OleDbConnection(strCon); string strCom=“SELECT * FROM book order by 编号 “; myConn.Open(); OleDbDataAdapter myCommand=new OleDbDataAdapter(strCom,myConn); myDataSet=new DataSet(); myCommand.Fill(myDataSet,“book“); this.dataGrid1.DataSource=this.myDataSet.Tables“book“; myConn.Close(); catch(Exception x) MessageBox.Show(“错误!”+x.ToString(), “error”); ,其中“查询”按钮的“单击”事件代码为: private void button1_Click(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(); 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”); ,其中“添加”按钮的“单击”事件代码为: private void button2_Click(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(); string strCom=“INSERT INTO book(编号,书名,作者,价格,书架号) VALUES (“+this.textBox2.Text+“,“+this.textBox3.Text+“,“+this.textBox4.Text+“,“+this.textBox5.Text+“,“+this.textBox6.Text+“)“; OleDbCommand inst=new OleDbCommand(strCom,myConn); inst.ExecuteNonQuery(); OleDbDataAdapter myCommand=new OleDbDataAdapter(“SELECT * FROM book order by 编号“,myConn); myDataSet.Clear(); myCommand.Fill(myDataSet,“book“); myConn.Close(); catch(Exception x) MessageBox.Show(“错误“+x.ToString(),“error“); ,其中“删除”按钮的“单击”事件代码为: private void button3_Click(object sender, System.EventArgs e) try int a=this.dataGrid1.CurrentCell.RowNumber; string strCon=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:book.mdb“; OleDbConnection myConn=new OleDbConnection(strCon); myConn.Open(); string strCom=“DELETE From book where 编号 =“ strCom +=this.myDataSet.Tables0.Rowsa0; OleDbCommand delst=new OleDbCommand(strCom,myConn); delst.ExecuteNonQuery(); OleDbDataAdapter myCommand=new OleDbDataAdapter(“SELECT * FROM Book order by 编号“,myConn); myDataSet.Clear(); myCommand.Fill(myDataSet,“book“); myConn.Close(); catch(Exception x) MessageBox.Show(“错误“+x.ToString(),“error“); ,其中“修改”按钮的“单击”事件代码为(这里一次只能修改一行): private void button4_Click(object sender, System.EventArgs e) try int a=this.dataGrid1.CurrentCell.RowNumber; string strCon=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:book.mdb“; OleDbConnection myConn=new OleDbConnection(strCon); myConn.Open(); string strCom=“UPDATE book set 书名=“ +this.myDataSet.Tables”book“.Rowsa1+”,作者=“ +this.myDataSet.Tables”book“.Rowsa2+”,价格=“ +this.myDataSet.Tables”book“.Rowsa3+”,书架号=“ +this.myDataSet.Tables”book“.Rowsa4+” where 编号=“ +this.myDataSet.Tables“book“.Rowsa0; OleDbCommand inst=new OleDbCommand(strCom,myConn); inst.ExecuteNonQuery(); OleDbDataAdapter myCommand=new OleDbDataAdapter(“SELECT * FROM book order by 编号“,myConn); this.myDataSet.Clear(); myCommand.Fill(myDataSet,“book“); myConn.Close(); catch(Exception x) MessageBox.Show(“错误“+x.ToString(),“error“); ,“修改”多行按钮的“单击”事件代码为: private void button2_Click(object sender, System.EventArgs e) try string strCon=“Provider=Microsoft.Jet.OLEDB.4.0;Data source=F:student.mdb“; OleDbConnection myconn=new OleDbConnection(strCon); string upstr; OleDbCommand inst; myconn.Open(); int a=this.myDataSet.Tables0.Rows.Count; this.textBox1.Text=a.ToString(); for(int i=0;ia;i+) upstr=“update student set 姓名=”+this.myDataSet.Tables0.Rowsi1; upstr += “,语文=”+this.myDataSet.Tables0.Rowsi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创新技术面试题目及答案
- 文化娱乐行业线上线下融合发展趋势报告
- 邮储银行2025南平市半结构化面试15问及话术
- 工商银行2025黄南藏族自治州金融科技岗笔试题及答案
- 2025年3D打印技术的快速成型
- 邮储银行2025宣城市数据分析师笔试题及答案
- 2025年3D打印技术的产业变革潜力
- 中国银行2025岳阳市秋招面试典型题目及参考答案
- 农业银行2025巴彦淖尔市秋招英文面试题库及高分回答
- 建设银行2025白山市秋招无领导小组面试案例题库
- 2025年证券从业资格考试金融市场基础知识押题及答案
- (正式版)DB1509∕T 0003-2023 《奶绵羊产奶性能测定技术规程》
- 2025年吉林省教育系统校级后备干部选拔考试题及答案
- 社区安全知识培训资料课件
- 托盘运输知识培训内容课件
- 2024年春季云南省高中学业水平合格性考试化学试卷真题(含答案)
- 2025年不明原因肺炎应急演练预案范文
- 子宫腺肌病课件
- 2025年小学语文教师业务理论考试试题及答案教材过关题库
- 商标侵权认定培训课件
- 新版膳食指南2025电子版
评论
0/150
提交评论