《第9章数 据库 应用》由会员分享,可在线阅读,更多相关《第9章数 据库 应用(25页珍藏版)》请在金锄头文库上搜索。
1、1,第9章 数据库应用,学习内容与要点 使用ADO.NET对象 使用ADO.NET控件,2,9.1 概述,ADO.NET统一了数据容器类编程接口,无论编写何种应用程序(Windows窗体、Web窗体、Web服务)都可以通过同一组类来处理数据。无论后端数据源是SQL Server数据库、Oracle数据库、其它数据库、XML文件,还是一个文本文件,都使用一样的方式来处理它们。 ADO.NET包含两大核心控件,它们分别是.NET Framework数据提供程序和DataSet。,3,.NET Framework数据提供程序用于 连接到数据库、执行命令和检索结果。 .NET Framework 提供
2、了四个 .NET Framework 数据提供程序: SQL Server .NET Framework 数据提供程序 OLE DB .NET Framework 数据提供程序 ODBC .NET Framework 数据提供程序 Oracle .NET Framework 数据提供程序,4,.NET 数据提供程序提供四个核心对象 Connection对象用于与特定的数据源建立连接 Command对象用于对数据源执行命令 DataReader对象用于从数据源中读取只向前的只读数据流,它是一个简易的数据集 DataAdapter对象用于用数据源的数据填充 DataSet数据集并解析更新数据集。
3、DataSet是一个功能丰富、较复杂的数据集,它是支持 ADO.NET的断开式、分布式数据方案的核心对象。DataSet 表示包括相关表、约束和表间关系在内的整个数据集。,5,9.2 ADO.NET对象,9.2.1 Connection对象 用于连接数据库。 1.Connection对象的主要属性是ConnectionString,用于设置连接字符串。对于不同的Connection对象,其连接字符串也有所不同。 (1)SQL Server 使用SqlConnection对象。其典型的连接字符串为: “server=localhost;database=northwind ;uid=sa;pwd
4、=“ “ server=localhost;database=northwind; Integrated Security=SSPI“ 注意: SqlConnection对象需要命名空间 SYStem.Data.SqlClient,6,SqlConnection类的常用方法 Close方法: 关闭数据库连接 Open方法 打开一个数据库连接,7,例:打开和关闭数据库 private void button1_Click(object sender, EventArgs e) string constr = “server=(local);database=学生管理数据库;uid=sa;pwd=
5、123“; SqlConnection con = new SqlConnection(constr); con.Open(); string sqlstr = “select count(*) from student“; SqlCommand cmd = new SqlCommand(sqlstr, con); int count = Convert.ToInt32(cmd.ExecuteScalar(); textBox1.Text = count.ToString(); con.Close(); ,8,(2)OLE DB 使用OleDbConnection对象。 连接字符串: “Pro
6、vider=SQLOLEDB;Data Source=MySQLServer;Integrated Security=SSPI“ 注意: OleDbConnection对象需要命名空间 SYStem.Data.OleDb,9,9.2.2 Command对象,Command对象用于完成对数据源的查询、插入、删除、更新等操作。 常用属性 CommandType:获取或设置Command对象要执行命令的类型 CommandText:获取或设置对数据源执行的SQL语句或存储过程名或表名 CommandTimeOut:获取或设置在终止对执行命令的尝试并生成错误之前的等待时间 Connection:获取或
7、设置此Command对象使用的Connetion对象的名称,10,可以使用SQL语句,存储过程完成这些操作。 使用存储过程:CommandType属性设为 StoredProcedure,CommandText属性设为存储过程的名字。 使用SQL语句:把CommandType属性设为 Text,CommandText属性设为SQL语句。 直接访问整个数据表:把CommandType属性设为TableDirect,把CommandText属性设为数据表名称,11,Command 对象的主要方法 ExecuteReader方法:执行返回数据集的Select语句,返回一个 DataReader 对象
8、 ExecuteScalar方法:只返回结果集中第一行的第一列,常用于SQL语句的聚集函数。 ExecuteNonQuery方法:执行不返回结果的命令,常用于记录的插入、删除、更新等操作,12,创建和执行Command对象举例,例1:使用ExecuteScalar方法 private void button1_Click(object sender, EventArgs e) string constr = “server=(local);database=学生管理数据库; uid=sa;pwd=123“; SqlConnection con = new SqlConnection(const
9、r); con.Open(); string sqlstr = “select count(*) from student“; SqlCommand cmd = new SqlCommand(sqlstr, con); int count = Convert.ToInt32(cmd.ExecuteScalar(); textBox1.Text = count.ToString(); con.Close(); ,SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = sqls
10、tr; cmd.Connection = con;,13,创建和执行Command对象举例,例2:使用ExecuteNonQuery方法 private void button2_Click(object sender, EventArgs e) string constr = “server=(local);database=学生管理数据库; uid=sa;pwd=123“; SqlConnection con = new SqlConnection(constr); string sqlstr = “update student set sname=徐飞 where sno=95011“;
11、 SqlCommand cmd = new SqlCommand(sqlstr, con); cmd.Connection.Open(); textBox2.Text=Convert.ToString(cmd.ExecuteNonQuery(); con.Close(); ,14,9.2.3 DataReader对象,DataReader 对象是一个简单的数据集,用于从数据源中检索只读、只向前数据流。 它通过Command对象的ExecuteReader方法创建 使用 DataReader 对象的 Read 方法可从查询结果中获取行 返回行的每一列值的方法 通过向 DataReader 传递列
12、的名称或序号引用 调用GetDateTime、GetDouble、GetGuid、GetInt32 等方法,15,举例:DataReader的使用 string consql = “server=(local);database= 学生管理数据库; uid=sa;pwd=123“; SqlConnection con = new SqlConnection(consql); string sql=“select * from student where sno=“+textBox1.Text+“; SqlCommand com=new SqlCommand(sql,con); con.Open
13、(); SqlDataReader sdr = com.ExecuteReader(); while (sdr.Read() textBox2.Text = sdr“sname“.ToString(); sdr.Close(); con.Close();,textBox2.Text = sdr.GetString(1);,16,9.2.4 DataAdapter对象,它是DataSet对象和数据源之间的一个桥梁,用于从数据源中检索数据、填充 DataSet对象中的表及对DataSet对象做出的更改提交回数据源 它使用Command对象从数据源中检索数据并将更改提交回数据源,Command对象体
14、现在DataAdapter的SelectCommand、InsertCommand、UpdateCommand 和 DeleteCommand 属性上。 它的 Fill 方法用于在DataSet中添加或刷新行以匹配数据源中的行。,17,9.2.5 DataSet对象,1. 数据集 (1)表示相关表、约束和表间关系在内的数据集合 (2)相关对象: DataSet、DataTable、DataColumn、Constraint、DataRelation、DataRow。 DataSet 类包含数据表的集合Tables和DataRelation 对象的集合Relations。 DataTable类包
15、含表行的集合Rows、数据列的集合Columns和数据关系的集合ChildRelations 和ParentRelations。,18,2. 填充数据集 (1)填充数据集的方法: 调用DataAdapter对象的Fill方法。 通过创建 DataRow 对象并将它们添加到表的Rows集合,手动填充数据集中的表。 将XML文档或流读入数据集。 合并(复制)另一个数据集的内容。 例 调用DataAdapter对象的Fill方法填充数据集 SqlConnection con = new SqlConnection(“server=(local);database= 学生管理数据库; uid=sa;p
16、wd=123“); con.Open(); SqlDataAdapter sdr= new SqlDataAdapter(“select * from sc“,con); DataSet ds = new DataSet(); sdr.Fill(ds, “sc1“); dataGridView1.datasource=ds.Tables0 con.Close();,dataGridView1.DataMember = “sc1“; dataGridView1.DataSource = ds;,19,3访问数据集 直接使用对象访问数据集中的数据。DataSet对象的数据表集合 Tables,DataTable对象的数据行集合Rows、数据列集合Columns。 例如,访问sc数据表的第四行数据的grade列的值ds.Tables“sc”.Rows3“grade”; 4更新数据集 (1)添加数据 DataRow row= ds.Tables“sc“.NewRow(); row“Sno