《《c#.net程序设计课件》(资料全集)c#9》由会员分享,可在线阅读,更多相关《《c#.net程序设计课件》(资料全集)c#9(72页珍藏版)》请在金锄头文库上搜索。
1、第第九九章章数据库编程数据库编程C#.net程序设计C#.NET程序设计本章主要内容本章主要内容ADO.NET结构结构.NET框架数据提供程序框架数据提供程序DataSet数据集与数据集与DataTable相关类相关类TableAdapter查询查询Windows 窗体数据控件窗体数据控件数据访问可视化编程数据访问可视化编程C#.NET程序设计 设计设计ADO.NET的目的的目的新的应用程序越来越松散地耦合,通常基于新的应用程序越来越松散地耦合,通常基于 Web应用程序模型。应用程序模型。Web应用程序将应用程序将HTTP用用 作在层间进行通信的结构,必须显式处理请求作在层间进行通信的结构,必
2、须显式处理请求 之间的维护状态。这一新模型大大不同于连接、之间的维护状态。这一新模型大大不同于连接、 紧耦合的编程风格,此风格曾是客户端紧耦合的编程风格,此风格曾是客户端/服务服务 器时代的标志。在紧耦合编程风格中,连接会器时代的标志。在紧耦合编程风格中,连接会 在程序的整个生存期中保持打开,而不需要对在程序的整个生存期中保持打开,而不需要对 状态进行特殊处理。状态进行特殊处理。 设计设计ADO.NET的目的是为了满足这一新编程的目的是为了满足这一新编程 模型的新要求:具有断开式数据结构;能够与模型的新要求:具有断开式数据结构;能够与 XML紧密集成;具有能够组合来自多个不同紧密集成;具有能够
3、组合来自多个不同 数据源数据的通用数据表示形式;以及具有与数据源数据的通用数据表示形式;以及具有与 数据库交互的优化功能。数据库交互的优化功能。ADO.NET概 述概 述C#.NET程序设计 ADO.NET结构结构ADO.NET 可 以 访 问 和 处 理 数 据 的 两 个 组 件可 以 访 问 和 处 理 数 据 的 两 个 组 件 是:是:.NET框架数据提供程序和框架数据提供程序和DataSet。.NET框架数框架数 据提供程序用于连接到数据库据提供程序用于连接到数据库、执行命令和检索结果执行命令和检索结果 的的。DataSet对象也可以独立于对象也可以独立于.NET框架数据提供程框架
4、数据提供程 序使用序使用,以管理应用程序本地的数据或源自以管理应用程序本地的数据或源自XML的数的数 据据。ADO.NET概 述概 述C#.NET程序设计.NET框架数据提供程序框架数据提供程序.NET框架数据提供程序使用四个核心对象进行数据处理对象说明Connection建立与特定数据源的连接。所有Connection对象的 基类均为DbConnection类。Command对数据源执行命令。公开Parameters,并且可以通 过Connection在Transaction的范围内执行。所有 Command对象的基类均为DbCommand类。DataReader从数据源中读取只进且只读的数
5、据流。所有 DataReader对象的基类均为DbDataReader类。DataAdapter用数据源填充DataSet并解析更新。所有 DataAdapter对象的基类均为DbDataAdapter类。除上表列出的核心类之外,.NET框架数据提供程序还 包含CommandBuilder,Transaction,和Parameter等类。ADO.NET概 述概 述下面示例显示如何使用SQL Server.NET框架数据提供程序连接 到Microsoft SQL Server的Northwind示例数据库,并使用 SqlDataReader从Orders表返回记录列表。 using Syste
6、m.Data.SqlClient; string connectionString = “Data Source=.SqlExpress; Initial Catalog=Northwind;Integrated Security=True“; SqlConnection connection = new SqlConnection(connectionString); string queryString = “SELECT OrderID, CustomerID FROM dbo.Orders;“; SqlCommand command =new SqlCommand(queryStrin
7、g, connection); connection.Open();/执行SqlCommand必须打开。 SqlDataReader reader = command.ExecuteReader(); while (reader.Read()/ 取数据前调用Read /*使用索引,按给定列序号获取指定列值,在给定列名称的获 取指定列值*/ Console.WriteLine(“0,1“, reader0, reader1); reader.Close();/必须关闭,command才可执行下个命令。 connection.Close();/必须关闭连接C#.NET程序设计.Net框架数据提供程
8、序比较框架数据提供程序比较不同的数据库数据处理将使用不同的数据提供程序:不同的数据库数据处理将使用不同的数据提供程序: OLE DB .NET框架数据提供程序框架数据提供程序ODBC .NET框架数据提供程序框架数据提供程序 Oracle .NET框架数据提供程序框架数据提供程序 SQL SERVER .NET框架数据提供程序框架数据提供程序 这些这些NET框架数据提供程序的类是一一对应的,如下图:框架数据提供程序的类是一一对应的,如下图:SQL Server 与与OLE DB .NET框架框架 数据提供程序类比较数据提供程序类比较ADO.NET概 述概 述只需将SQL SERVER .NET
9、框架数据提供程序的类名的前面的Sql 更换成OleDb,Oracle或Odbc,添加各自的命名空间如OleDb,使用 using System.Data.OleDb;除此之外,一个关键的不同是Connection中 的连接字符串,其他就完全相同。 下面示例显示如何使OLE DB .NET连接到Microsoft Access Northwind 示例: using System.Data.OleDb; string connectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ +“e:c#.netchapter9North
10、wind.mdb;User Id=admin;Password=;“; OleDbConnection connection = new OleDbConnection(connectionString) string queryString = “SELECT OrderID, CustomerID FROM dbo.Orders;“; OleDbCommand command = connection.CreateCommand(); connection.Open();/执行SqlCommand必须打开。 OleDbDataReader reader = command.ExecuteR
11、eader(); while (reader.Read()/ 取数据前调用Read /*使用索引,按给定列序号获取指定列值,在给定列名称的获取指定列 值*/ Console.WriteLine(“0,1“,reader0, reader1); 下面示例显示如何使用ODBC.NET框架 数据提供程序 (System.Data.ODBC)连接到Microsoft Access Northwind 示例数据库, 并使用OdbcDataReader从Orders表返回记录列表。 using System.Data.Odbc; string connectionString = “Driver=Micr
12、osoft Access Driver (*.mdb);“ + “Dbq=e:c#.netchapter9Northwind.mdb;Uid=Admin;Pwd=;“; OdbcConnection connection = new OdbcConnection(connectionString) string queryString = “SELECT OrderID, CustomerID FROM dbo.Orders;“; OdbcCommand command = connection.CreateCommand(); connection.Open();/执行SqlCommand必
13、须打开。 OdbcDataReader reader = command.ExecuteReader(); while (reader.Read()/ 取数据前调用Read /使用索引,按给定列序号获取指定列值,在给定列名称的获取指 /定列值 Console.WriteLine(“0,1“, reader0, reader1); C#.NET程序设计Connection类建立连接类建立连接抽象抽象DbConnection类表示到数据库的连接,实现了类表示到数据库的连接,实现了 IDbConnection接口。以下是接口。以下是DbConnection类在不同数类在不同数 据提供程序中的子类:据
14、提供程序中的子类: System.Data.Common.DbConnection/以下是不同子类以下是不同子类 System.Data.Odbc.OdbcConnection System.Data.OleDb.OleDbConnection System.Data.OracleClient.OracleConnection System.Data.SqlClient.SqlConnection SqlConnection类表示一个到类表示一个到SQL Server数据库的连数据库的连 接,需要把程序集接,需要把程序集System.Data.dll添加到项目的引用中,添加到项目的引用中, 才
15、可以使用这个类才可以使用这个类,一般项目默认包含。一般项目默认包含。 通过添加通过添加using System.Data.SqlClient;可以方便地可以方便地 使用使用SQL Server .NET框架框架 数据提供程序的各种对象数据提供程序的各种对象.NET框 架 数 据 提 供 程 序框 架 数 据 提 供 程 序C#.NET程序设计Connection类建立连接类建立连接创建创建SqlConnection对象代码如下:对象代码如下: string connectionString = “Data Source=.SqlExpress;Initial Catalog=Northwind
16、; Integrated Security=True SqlConnection connection = new SqlConnection(connectionString); SqlConnection类最重要属性是类最重要属性是ConnectionString连连 接字符串,构成如下:接字符串,构成如下: “Data Source=.SqlExpress;” 表示连接本地服务器上的表示连接本地服务器上的 SQL Server Express数据库。其中“数据库。其中“.” 表示本地服务器。表示本地服务器。 “Initial Catalog=Northwind;”表示数据库名称表示数据库名称 Northword。 “Integrated Security= True;“ 表示连接登录身份验证使表示连接登录身份验证使 用用 Windows 身份