版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章C#的数据库操作
ADO.NET向编程人员提供了功能强大的数据访问能力,既可以直接在编程模式下通过输入程序代码设计数据访问程序,也可以利用系统提供的数据访问向导直接进行可视化程序设计。9.1Access数据库
数据库(Database,即DB)是存储在一起的相关数据的集合,是存储数据的“仓库”。是指依照一定格式存放在一起的数据记录文件。。数据库中的信息是以表的形式组成的,一个数据库中可以放多个表,各个表具有行和列。“数据库管理系统DBMS”(databasemanagementsystem)则是用来操作与管理数据库的软件,MicrosoftAccess、MicrosoftSQLServer、Oracle都是属于DBMS软件,通过这些软件,用户可以对数据进行定义、创建与运算。
信息中心专门人才基本情况表
编号姓名性别出生日期工资党员否简历照片bj10001刘伟箭男1960.08.232000.00T(略)(略)bj11002刘简捷男1958.12.311800.00T(略)(略)gz05001藤波海男1956.04.141160.00T(略)(略)gz05002杨行东男1949.03.301260.00F(略)(略)jl04001林慧繁女1965.02.036000.00T(略)(略)jl04002黄晓远男1969.08.128000.00F(略)(略)sy02030李鹏程男1946.02.083000.00F(略)(略)sy02035王国民男1935.05.205000.00F(略)(略)sh01001金银桥女1969.01.242000.00F(略)(略)sh01002林立荞女1964.08.164500.00F(略)(略)9.1.1建立Access数据库表
选按“开始”|“程序”|“MicrosoftAccess”,启动Access,屏幕上会出现对话框,在任务窗格内点取“空Access数据库”,然后单击“确定”按钮。出现“文件新建数据库”对话框,指定新数据库的保存位置、文件名,然后按“创建”。MicrosoftAccess创建的数据库文件的扩展名是.mdb。9.1.2Access数据库操作1.创建新数据库项目2.创建数据库连接对数据库的操作首先要和数据库建立一个连接,与数据库建立连接可以通过系统提供的控件实现。3.创建数据库对象和访问方法4.设置程序显示界面5.显示数据库中的数据20世纪90年代以来,C/S模式得到了十分迅速的流行。它主要从一次数据计算的完成过程这个角度而言的,客户机进行数据请求,请求传到服务器,服务器负责完成数据计算或数据库操作,最终结果返回到客户机。几乎每个新的网络操作系统和每个新的多用户数据库系统都声称能支持C/S模式。实现C/S模式允许有许多不同的策略。从最典型的数据库管理系统的应用来看,在LAN上采取的C/S模式,即指在LAN中至少有一台数据库服务器(DBMSserver),可以作为希望去存取公共数据库的各台工作站的后援支持。把应用任务中的程序执行内容划分成两部分:与数据库存取有关的部分由DBMSserver承担,与应用的人机界面处理,输入/输出或一部分应用的逻辑功能等有关的内容由client端工作站承担。SQL语言简介SQL(StructuredQueryLanuage,结构化查询语言)是现代关系数据库的标准语言。现在的大多数数据库系统都采用SQL语言作为共同的数据存取语言和标准接口,使不同数据库系统之间的互操作成为了可能。
SQL语言的功能极为强大,语言十分简捷,第321页的表13-1列出了SQL语言的9个命令,这9个命令就可以完成几乎所有的数据操作,在这9个命令中,常用的只有4个。
如果要使用SQL编写程序,则需要另一语言或平台来实现所有实际信息的显示。例如:SELECT*FROMSTU1语句:SELECT学号,数学+5FROMSTU1WHERE关键字在WHERE子句中,用条件表达式来确定要显示的记录。 ••• WHERE<条件表达式>例如:SELECT学号,姓名FROMSTU1WHERE数学=90SELECT学号,姓名FROMSTU1WHERE数学=90OR平均分>=85LIKE关键字格式:……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<排序字段名>子句。如下例:2.INSERT命令(插入命令)格式:INSERTINTO<表文件名>(属性列表)VALUE(数据表)功能:插入一条新记录,其内容是将VALUE后(数据表)中的数据依次送到(属性列表)中的各属性。如:INSERTINTOSTU1(学号,姓名,计算机基础,数学,马列原理,体育,总分,平均分)VALLUE(‘962105’,‘李小丽’,77,88,90,80.2)3.UPDATE命令(更新命令)格式:UPDATE<表文件名>SET<属性列名>=<表达式>WHERE<条件表达式>例如:UPDATESTU2SET就读方式=‘统招’ UPDATESTU1SET计算机基础=计算机基础*1.15%9.3ADO.NET编程无论什么样的程序,都要与数据打交道,现在的程序中要处理的信息量越来越大,早已不能满足几个变量所提供的信息量,而是把大量信息预先存储到数据库文件中,然后利用某种技术读取数据库中的预存信息,将读取的信息送给程序界面显示出来,或将新内容存入数据库。ADO.NET就是就是负责数据存取的对象。
9.3.1ADO.NET的概念
在应用程序中访问数据库的一般过程为:首先必须连接数据库;接着发出SQL语句,告诉数据库要进行什么样的工作;最后由数据库返回所需的数据记录。在ADO.NET中,上述访问数据库的三项工作,分别由三个对象来完成:Connection对象负责连接数据库;Command对象对数据下达SQL命令;DataSet对象用来保存所查询到的数据记录。在ADO.NET中,介于DataSet和Connection对象之间,还有一个在数据库与DataSet对象之间扮演传递数据的对象DataAdapter(适配器)。此外,还有一个DataView对象,该对象提供了对DataSet对象内的表进行排序、过滤记录及记录搜索等功能。例://创建一个和数据库的连接……//SQL命令字符串stringstrCom=“SELECT*FROM世界杯”;//创建一个数据集DataSetmyDataSet=newDataSet();//用OleDbDataAdapter得到一个数据集
OleDbDataAdapterda=newOleDbDataAdapter(strCom,myConn);//把DataSet绑定世界杯数据表da.Fill(myDataSet,“世界杯”);……da.Update(myDataSet,“世界杯”);
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=newOleDbConnection(strCon);stringstrCom="SELECT*FROMbook";this.myDataSet=newDataSet();myConn.Open();MessageBox.Show("连接成功!");OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);myCommand.Fill(myDataSet,"book");myConn.Close();}catch(Exceptione){MessageBox.Show("连接错误!"+e.ToString(),"错误");}}privatevoidbutton1_Click(objectsender,System.EventArgse){GetConnected();dataGrid1.DataSource=myDataSet.Tables["book"];}
9.3.3ADO.NET编程及绑定1.数据集编程在ADO.NET中,建立连接后就需要使用数据命令打包SQL语句或存储过程。如果是使用SELECT语句查询数据库,调用命令的执行方法后将返回查询结果,同时将数据缓存到数据集中,用户可使用数据集获取这些行;如果是调用Update命令,则将返回所影响的行数;其他类型的命令将返回一个错误代码。在ADO.NET中,数据集就是临时存储从数据库检索的记录,是从数据源检索的记录的缓存,数据集中可包含一个或多个表,这些表基于实际数据库中的表。因为数据集实际上是数据库的私有副本,所以它不一定反映数据库的当前状态。如果想要查看其他用户进行的最新更改,可以通过调用适当的Fill()方法刷新数据集。SQL命令主要有SELECT、INSERT、UPDATE、DELETE。
2.数据绑定Windows窗体的数据绑定便于在窗体控件中显示数据,如果使用DataGrid控件,则需要使用DataGrid控件进行绑定。主要通过Fill()方法。
例:其中窗体的“Load”事件代码为:privatevoidForm1_Load(objectsender,System.EventArgse){try{
stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\book.mdb";OleDbConnectionmyConn=newOleDbConnection(strCon);stringstrCom="SELECT*FROMbookorderby编号";myConn.Open();OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);myDataSet=newDataSet();myCommand.Fill(myDataSet,"book");this.dataGrid1.DataSource=this.myDataSet.Tables["book"];myConn.Close();}catch(Execptionx){MessageBox.Show(“错误!”+x.ToString(),“error”);}}其中“查询”按钮的“单击”事件代码为:privatevoidbutton1_Click(objectsender,System.EventArgse){try{stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\book.mdb";OleDbConnectionmyConn=newOleDbConnection(strCon);
myConn.Open();
stringstrCom=“SELECT*FROMbookWHERE书名Like'%"+this.textBox1.Text+"%'";OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);this.myDataSet.Clear();myCommand.Fill(myDataSet,"book");myConn.Close();}catch(Execptionx){MessageBox.Show(“错误!”+x.ToString(),“error”);}}其中“添加”按钮的“单击”事件代码为:privatevoidbutton2_Click(objectsender,System.EventArgse){try{stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\book.mdb";OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();stringstrCom="INSERTINTObook(编号,书名,作者,价格,书架号)VALUES('"+this.textBox2.Text+"','"+this.textBox3.Text+"','"+this.textBox4.Text+"',"+this.textBox5.Text+","+this.textBox6.Text+")";OleDbCommandinst=newOleDbCommand(strCom,myConn);inst.ExecuteNonQuery();OleDbDataAdaptermyCommand=newOleDbDataAdapter("SELECT*FROMbookorderby编号",myConn);myDataSet.Clear();myCommand.Fill(myDataSet,"book");myConn.Close();}catch(Exceptionx){MessageBox.Show("错误"+x.ToString(),"error"); }}其中“删除”按钮的“单击”事件代码为:privatevoidbutton3_Click(objectsender,System.EventArgse){try{inta=this.dataGrid1.CurrentCell.RowNumber;
stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\book.mdb";OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();
stringstrCom=“DELETEFrombookwhere编号="strCom+=this.myDataSet.Tables[0].Rows[a][0];OleDbCommanddelst=newOleDbCommand(strCom,myConn);delst.ExecuteNonQuery();OleDbDataAdaptermyCommand=newOleDbDataAdapter("SELECT*FROMBookorderby编号",myConn);myDataSet.Clear();myCommand.Fill(myDataSet,"book");myConn.Close();}catch(Exceptionx){MessageBox.Show("错误"+x.ToString(),"error");}}其中“修改”按钮的“单击”事件代码为(这里一次只能修改一行):privatevoidbutton4_Click(objectsender,System.EventArgse){try{inta=this.dataGrid1.CurrentCell.RowNumber;
stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\book.mdb";OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();stringstrCom=“UPDATEbookset书名=‘“+this.myDataSet.Tables[”book“].Rows[a][1]+”’,作者=‘“+this.myDataSet.Tables[”book“].Rows[a][2]+”’,价格=“+this.myDataSet.Tables[”book“].Rows[a][3]+”,书架号=“+this.myDataSet.Tables[”book“].Rows[a][4]+”where编号="+this.myDataSet.Tables["book"].Rows[a][0];OleDbCommandinst=newOleDbCommand(strCom,myConn);inst.ExecuteNonQuery();OleDbDataAdaptermyCommand=newOleDbDataAdapter("SELECT*FROMbookorderby编号",myConn);this.myDataSet.Clear();myCommand.Fill(myDataSet,"book");myConn.Close();}catch(Exceptionx){MessageBox.Show("错误"+x.ToString(),"error");}}“修改”多行按钮的“单击”事件代码为:privatevoidbutton2_Click(objectsender,System.EventArgse){try{stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;Datasource=F:\\student.mdb";OleDbConnectionmyconn=newOleDbConnection(strCon);stringupstr;OleDbCommandinst;myconn.Open();inta=this.myDataSet.Tables[0].Rows.Count;this.textBox1.Text=a.ToString();for(inti=0;i<a;i++){upstr=“updatestudentset姓名=‘”+this.myDataSet.Tables[0].Rows[i][1];upstr+=“’,语文=”+this.myDataSet.Tables[0].Rows[i][2]+“,数学upstr+=“,数学=”+this.myDataSet.Tables[0].Rows[i][3]+“,英语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西邮电职业技术学院《现代物流学》2023-2024学年第一学期期末试卷
- 2024年标准食堂服务人员劳务合同版B版
- 2024至2030年稀禾定项目投资价值分析报告
- 2024至2030年普通座活动看台项目投资价值分析报告
- 公司解除服务合同范例
- 陕西铁路工程职业技术学院《新媒体运营与分析》2023-2024学年第一学期期末试卷
- 陕西师范大学《国际工程管理》2023-2024学年第一学期期末试卷
- 陕西青年职业学院《招聘与选拔》2023-2024学年第一学期期末试卷
- 公司名义买房合同范例
- 2024年电动车灯头塑壳项目可行性研究报告
- 现代酒店管理智慧树知到课后章节答案2023年下海南工商职业学院
- 2023-2024学年云南省昆明市西山区六上数学期末经典模拟试题含答案
- 浙江省绍兴市新昌县2023-2024学年数学三上期末调研模拟试题含答案
- 笛卡尔环线性化技术的基本原理
- 人教版小学数学三年级上册全套课件合集
- GB/T 10001.1-2023公共信息图形符号第1部分:通用符号
- 资产评估常用数据与参数手册
- 公园广场保洁管理服务投标方案
- 警察影像-江苏警官学院中国大学mooc课后章节答案期末考试题库2023年
- 金融随机分析2课后答案
- 数控铣床工作台三维运动伺服进给系统设计-课程设计
评论
0/150
提交评论