C程序设计基础-教程实验习题[赵敏][电子教案]第九章-2

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

【例9-20】创建窗体应用程序,查看学生数据库中stin表的内容及其字段结构。执行结果在RichTextBox中。(1)先引用System.Data.SqlClient命名空间,然后在窗体类中定义如下变量:SqlConnectionconn=newSqlConnection();SqlCommandcmd=newSqlCommand();stringstr=@DataSource=127.0.0.1;InitialCatalog=学生;IntegratedSecurity=True;(2)使用GetValues方法获取查询结果,代码如下:privatevoidbutton1_Click(objectsender,EventArgse)//GetValues方法获取查询结果{richTextBox1.Text=;conn.ConnectionString=str;conn.Open();cmd.Connection=conn;cmd.CommandText=select*fromstin;SqlDataReaderresult=cmd.ExecuteReader();Object[]dataRow=newObject[result.FieldCount];//定义以字段个数为长度Object数组while(result.Read()==true)//每循环一次,指针后移一次{result.GetValues(dataRow);//获取当前行所有字段内容,保存到数组中for(inti=0;iresult.FieldCount;i++)//逐字段显示当前行内容richTextBox1.Text+=dataRow[i]+;richTextBox1.Text+=\n;}result.Close();conn.Close();}(3)直接使用DataReader对象显示出所有查询结果:privatevoidbutton2_Click(objectsender,EventArgse){richTextBox1.Text=;conn.ConnectionString=str;conn.Open();cmd.Connection=conn;cmd.CommandText=select*fromstin;SqlDataReaderresult=cmd.ExecuteReader();//执行命令,返回SqlDataReader对象//迭代结果集中的行,直到读完最后一条记录,Read返回Falsewhile(result.Read()==true){for(inti=0;iresult.FieldCount;i++)richTextBox1.Text+=result[i]+;//result[i]用数字序号引用字段richTextBox1.Text+=\n;}result.Close();conn.Close();}(4)使用GetName方法获得表的结构privatevoidbutton3_Click(objectsender,EventArgse)//GetName方法获取字段名{richTextBox1.Text=;conn.ConnectionString=str;conn.Open();cmd.Connection=conn;cmd.CommandText=select*fromstin;SqlDataReaderresult=cmd.ExecuteReader();for(inti=0;iresult.FieldCount;i++)richTextBox1.Text+=result.GetName(i)+;//GetName方法获得所有列名richTextBox1.Text+=\n;result.Close();conn.Close();}9.5使用DataSet对象与DataAdapter对象9.5.1DataSet对象DataSet对象是支持ADO.NET的断开、分布式数据方案的核心对象。由于它在获得数据或更新数据后立即与数据库断开,因此程序员能用它实现高效的数据库访问和操作。DataSet对象是数据的内存驻留表示形式,无论数据源是什么,都会提供一致的关系编程模型。数据集(DataSet)独立于数据源,它的结构与关系数据库类似,也是由表(DataTable)、行(DataRow)和列(DataColumn)等对象构成的层次结构,在数据集中还包含约束(Constraint)和关系(DataRelation)。调用数据适配器(DataAdapter)对象的Fill()方法填充数据集,它将自动地在数据集中创建数据表,并设置它的结构及向其中填充数据一个数据集对象中可以包含多个DataTable,通过DataRelation设置这些DataTable之间的关系。表9-10是DataTable对象的常用属性和方法,其中Rows、Columns中包含的常用方法如表9-11所示。表(DataTable)的结构是通过表的列(DataColumn)表示的。DataColumn对象的常用属性如表9-12所示。表9-10DataTable对象的常用属性和方法DataTable属性和方法描述Rows设置或获取当前DataTable内的所有行Columns设置或获取当前DataTable内的所有列AcceptChanges()提交自上次调用AcceptChanges()方法以来对当前表进行的所有更改Clear()清除DataTable里原来的数据,通常在获取新的数据前调用Load(IDataReaderreader)方法通过参数中的IDataReader,把对应数据源里的数据装载到DataTable内Merge(DataTabletable)方法把参数中的DataTable和当前DataTable合并NewRow()方法为当前的DataTable增加一个新行,返回表示行的DataRow对象Select()方法选择符合筛选条件、与指定状态匹配的DataRow对象组成的数组表9-11Rows、Columns常用方法Rows常用方法Rows常用方法描述Columns常用方法Columns常用方法描述Add()向表(DataTable)中添加新行Add()把新建的列添加到集合中InsertAt()向表中添加新行到索引号的位置AddRange()把DataColumn类型的数组添加到列集合中Remove()删除指定的行(DataRow)对象Remove()把指定的列从列集合中移除RemoveAt()根据索引号删除指定位置的行RemoveAt()把指定索引位置的列从列集合中移除表9-12DataColumn对象的常用属性属性描述AllowDBNull是否允许当前列为空AutoIncrement是否为自动编号Caption设置或获取列的标题ColumnName列的名字DataType列的数据类型DefaultValue列的默认值MaxLength文本的最大长度通过下面的代码了解向表中添加列。DataTablemydt=myds.Tables.Add(mytable);//向表中添加列DataColumnmycolumn=newDataColumn();mycolumn.DataType=typeof(string);//该列的数据类型mycolumn.AllowDBNull=true;//该列允许为空mycolumn.Unique=false;//是否唯一mycolumn.ReadOnly=false;//是否只读,其值为false表示可以修改mycolumn.DefaultValue=1000;//默认值mycolumn.AutoIncrement=true;//该值自动递增mycolumn.AutoIncrementSeed=1000;//种子mycolumn.AutoIncrementStep=1;//递增的步长mycolumn.Caption=年龄;//标题,绑定在控件中显示mycolumn.ColumnName=age;//列名mydt.Columns.Add(mycolumn);//向DataTable的对象mydt添加列为了维护数据的完整性,可以使用约束来对DataTable中的数据施加限制,如外键约束(ForeignKeyConstraint)、唯一约束(UniqueConstraint)。(1)创建DataSet表间关系DataRelation对象。在包含多个DataTable对象的DataSet数据集中,DataTable之间的关系使用类DataRelation表示。如://myds为已经定义了的DataSet对象DataRelationdr=newDataRelation(CustOrders,//CustOrders是关系名称myds.Tables[Customers].Columns[CustId],//主键表及主键列myds.Tables[Orders].Columns[CustId]);//外键表及外键列myds.Relations.Add(dr);//向数据集中添加关系(2)数据保存在DataTable的Rows属性中。而数据行使用DataRow来表示。DataRow对象的常用属性和方法如表9-13所示。表9-13DataRow对象的常用属性和方法属性和方法描述RowState当前行的状态(包括Added、Deleted、Modified、Unchanged)AcceptChanges()提交自上次AcceptChanges()方法以来对当前行的所有修改Delete()删除当前的DataRow对象RejectChanges()拒绝上次执行AcceptChanges()方法以来对当前行的所有修改BeginEdit()开始对当前DataRow对象的编辑操作CancelEdit()撤销对当前DataRow对象的编辑操作EndEdit()结束对当前DataRow对象的编辑操作【例9-21】利用DataGridView对象、DataTable对象的Rows、Columns属性的Add()方法,完成向表中添加列、行及显示数据。运行结果如图9.6所示,代码如下:DataGridViewdgv1=newDataGridView();this.Controls.Add(dgv1);//向窗体中添加dgv1对象DataTabletable=newDataTable();table.Columns.Add(姓名,typeof(string));table.Columns.Add(工作单位,typeof(string));table.Columns.Add(电话号码,typeof(string));DataRowrow=table.NewRow();row[姓名]=苏丹;row[工作单位]=南昌航空大学;row[电话号码]=0791822222;table.Rows.Add(row);row=table.NewRow();row[姓名]=曾晓丽;row[工作单位]=南昌大学;row[电话号码]=0791866666;table.Rows.Add(row);dgv1.DataSource=table;9.5.2DataAdapter对象DataAdapter对象在DataSet与数据源之间起到桥梁的作用。DataAdapter对象使用Fill()方法将数据填充到DataSet的DataTable中去,还可以将DataSet的数据更改送回数据源。DataAdapter对象隐藏了与Connection和Command对象操作的细节。DataAdapter使用Connection来连接数据源并取出数据,使用Command对

1 / 46
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功