Presentation is loading. Please wait.

Presentation is loading. Please wait.

ADO.NET – 连接数据库. 2 课程地位 STB SQL Server XML PSPM ASP.NET Oracle OOAD Computer Base HTML&JavaScript OOP\Java C C SQL Base JSP/Servlet EJB/WebService C#

Similar presentations


Presentation on theme: "ADO.NET – 连接数据库. 2 课程地位 STB SQL Server XML PSPM ASP.NET Oracle OOAD Computer Base HTML&JavaScript OOP\Java C C SQL Base JSP/Servlet EJB/WebService C#"— Presentation transcript:

1 ADO.NET – 连接数据库

2 2 课程地位 STB SQL Server XML PSPM ASP.NET Oracle OOAD Computer Base HTML&JavaScript OOP\Java C C SQL Base JSP/Servlet EJB/WebService C# Struts/JSF Testing/SQA Linux WinForms

3 3 课程目标  使用 ADO.NET 构造数据库应用程序  WinForms 桌面程序设计  使用网络服务组件  掌握.NET 平台下的 C/S 结构应用程序的框架  熟练 C# 编码

4 4 本章目标  了解 ADO.NET 结构  了解 ADO.NET 的组件  使用 Command 对象和 Connection 对象  使用 ADO.NET 进行事务处理

5 5 ADO.NET 简介 4-1 以流的形式从文件中读写数据 以流的形式从文件中读写数据

6 6 ADO.NET 简介 4-2 以流的形式从文件中读写数据 中央数据库 要管理数据库,需要专门的软件应用程序 MS-ACCESS SQL-Server ORACLE

7 7 ADO.NET 简介 4-3 中央数据库 用户需要时,可以随时访问数据 用户计算机向数据库服务器发送请求 客户端 客户端 不同的访问方法和技术

8 8 ADO.NET 简介 4-4.NET Framework System.Data 命名空间 以 ActiveX 数据对象 (ADO) 为基础 以 XML (扩展标记语言)为格式传送和接收数据 以 ActiveX 数据对象 (ADO) 为基础 以 XML (扩展标记语言)为格式传送和接收数据

9 9 ADO.NET 的优点  互操作性  性能  可伸缩性  标准化  可编程能力

10 10 ADO.NET 的结构

11 11 ADO.NET 对数据库的访问 (3-1) 将数据传递到用户界面时, ADO.NET 采用 XML 格式 数据已缓存

12 12 ADO.NET 对数据库的访问 (3-2) 对于 Insert,Update,Delete 等单向操作 应用程序应用程序 数据库数据库 1 、用 Connection.Open 打开数据库 2 、用 DataAdaptor.Command 或者 Command.Execute 执行命令 3 、关闭数据库 Insert 用 InsertCommand Delete 用 DeleteCommand Update 用 UpdateCommand Insert 用 InsertCommand Delete 用 DeleteCommand Update 用 UpdateCommand

13 13 ADO.NET 对数据库的访问 (3-3) 应用程序应用程序数据库数据库 关闭数据库 1 、用 Connection.Open 建立连接 2 、用 DataAdaptor.SelectCommand 执行命令 DataAdaptor.Fill 对于 Select 的双向操作 DataSet

14 14 知识点小结  引入 ADO.NET 的原因  ADO.NET 的优缺点  ADO.NET 的组成结构  ADO.NET 对数据库的调用过程

15 15.NET 数据提供程序 5-1 Connection Command DataReader DataAdapter ADO.NET DataSet.NET Framework 数据提供程序 1 、 SQLClient 2 、 OLEDB 3 、 Oracle 4 、 ODBC 由以下各项组成的集合:

16 16.NET 数据提供程序 5-2 客户端 服务器 数据集 2 、将数据发送到数据集 A 、客户端修改数据集 3 、数据集传递给客户端 B 、将修改后的数据 集传递给服务器 1 、客户端从服务器请求数据 1 , 2 , 3 是从服务器检索数据的过程 A 、 B 是对数据库修改的过程

17 17.NET 数据提供程序 5-3  用于 SQL Server 的.NET Framework 数据提供程序 System.Data.SqlClient 命名空间 仅限于连接 SQL Server 数据库 7.0 或更高版本

18 18.NET 数据提供程序 5-4  用于 OLEDB 的.NET Framework 数据提供程序

19 19.NET 数据提供程序 5-5  用于 ODBC 的.NET Framework 数据提供程序的 命名空间  用于 Oracle 的.NET Framework 数据提供程序的 命名空间 System.Data.Odbc 命名空间 System.Data.OracleClient 命名空间

20 20 知识点小结  使用的名称空间  SQL Server using System.Data.SqlClient  OLE DB using System.Data.OleDb  Oracle using System.Data.OracleClient  ODBC using System.Data.Odbc

21 21 Connection 对象 4-1.NET Framework 数据提供程序 Connection 类 SQL 数据提供程序 SqlConnection OLE DB 数据提供程序 OleDbConnection Oracle 数据提供程序 OracleConnection ODBC 数据提供程序 OdbcConnection 在 ADO.NET 中,必须显式关闭连接,才能释放实际的数据库连接

22 22 Connection 对象 4-2 方法 Close() Open() 属性 ConnectionString Database

23 23 Connection 对象 4-3 单击 “ 数据 ” 选项卡 SqlConnection 拖放 sqlConnection1 已添加 从列表中选择 SQL Server 指定用户名和密码 最后选择数据库 如果连接成功,则会显示一则消息

24 24 Connection 对象 4-4 使用代码编辑器 使用代码编辑器 SqlConnection objSqlConnection = new SqlConnection ("server = SQLDB; uid = sa; pwd = password; database = pubs"); objSqlConnection.Open(); objSqlConnection  创建的连接对象名称 SQLDB  存储 “pubs” 数据库的服务器名称,也可以写成 IP 地址, 如 123.101.220.1 本地服务器可以有以下几种写法: 1 、( local ) 2 、 127.0.0.1 3 、本地机子名称 uid, pwd  用户标识和密码

25 25 知识点小结  Connection 对象的作用  Connection 对象的两种使用方法  拖拉控件  写代码  四种典型的连接方式的应用名称空间和连接字符 串的写法  SqlConnection  OleDbConnection  OracleConnection  OdbcConnection

26 26 Command 对象 7-1 数据库数据库 Command 对象指定要对数据库执行的操作 检索和操纵数据

27 27 Command 对象 7-2.NET Framework 数据提供程序 Command 类 SQL 数据提供程序 SqlCommand OLE DB 数据提供程序 OleDbCommand Oracle 数据提供程序 OracleCommand ODBC 数据提供程序 OdbcCommand 与数据库建立连接之后,可以使用 Command 对象执行 命令并从数据源返回结果

28 28 Command 对象 7-3 方法 ExecuteNonQuery() 返回受影响的行数 ExecuteScalar() 返回第一行第一列 ExecuteReader() 返回 DataReader 类型值 属性 CommandText 欲执行的内容,可以是 SQL 语 句或者存储过程名称 Connection CommandType 命令类型

29 29 Command 对象 7-4  用 SQL 语句的 Command 设置 SqlCommand objComm=new SqlCommand(); objComm.CommandText="SQL 语句 "; objComm.CommandType=CommandType.Text ; objComm. Connection=objConnection;  用存储过程的 Command 设置 SqlCommand objComm=new SqlCommand(); objComm.CommandText=“sp_DeleteName"; objComm.CommandType=CommandType. StoredProcedure ; objComm. Connection=objConnection; Sp_DeleteName 是在 SQL Server 服务器上创建的存储过程

30 30 Command 对象 6-4 单击 “ 数据 ” 选项卡 SqlCommand 拖放 已添加 sqlCommand1 将 sqlConnection1 设置为 sqlCommand1 的连接 在 CommandText 属性中键入 “Insert into FlightDetails values()”

31 31 Command 对象 7-6 已添加 “FlightDetails” 表 单击该表中所有字段旁边的框,以指定要在其中插入新值的列 为每一列指定新值 为每一列指定新值

32 32 Command 对象 7-7 使用代码编辑器 使用代码编辑器 SqlCommand objSqlCommand = new SqlCommand(strSQL); SqlCommand objSqlCommand = new SqlCommand(strSQL); objSqlConnection  创建的 Command 对象名称 strSQL  任何有效的 SQL 语句

33 33 知识点小结  Command 的作用  Command 的使用前提  Connection 打开  Command 的使用方法  命令文本方式  存储过程方式  Command 返回值类型  返回受影响的行数  返回第一行第一列  返回 DataReader

34 34.NET 中的事务处理 3-1 帐单 编号编号 说明数量价格总计 1 肥皂 520100 编号: 12439 日期: 2004 年 10 月 30 日 肥皂 关系表 数据库 5 12439 2004 年 10 月 30 日 已成功地完成对一个表的操作, 但是关系表尚未更新,因此, 数据会出现不一致的现象 成功地进行整个操作或者取消整个操作 确保 事务处理是一组数据操作,这些操作要么必须全部成功, 要么必须全部失败,以保证数据的一致性和完整性

35 35.NET 中的事务处理 3-2 Begin: 在执行事务处理中的任何操作之前,必须使用 Begin 命令来开始事务处理 Commit: 在成功将所有修改都存储于数据库时,才算是提 交了事务处理 Rollback: 由于在事务处理期间某个操作失败,而取消事务 处理已做的所有修改,这时将发生回滚 Begin: 在执行事务处理中的任何操作之前,必须使用 Begin 命令来开始事务处理 Commit: 在成功将所有修改都存储于数据库时,才算是提 交了事务处理 Rollback: 由于在事务处理期间某个操作失败,而取消事务 处理已做的所有修改,这时将发生回滚 事务处理命令 事务处理命令

36 36.NET 中的事务处理 3-3 类说明 OdbcTransaction 表示对数据源进行的 SQL 事务处理 OleDbTransaction 表示对数据源进行的 SQL 事务处理 OracleTransaction 表示对数据库进行的事务处理 SqlTransaction 表示要对 SQL Server 数据库进行的 Transact- SQL 事务处理

37 37 SqlTransaction 类 3-1 方法 属性 Save( ) Rollback( ) Commit( ) Connection SqlTransaction 类表示要对数据源进行的事务处理

38 38 SqlTransaction 类 3-2 在 ADO.NET 中实现事务处理时执行的步骤顺序 在 ADO.NET 中实现事务处理时执行的步骤顺序 SqlConnection objSqlConnection = new SqlConnection ("server=SQLDB; uid=sa; pwd=password; database=pubs"); objSqlConnection.Open(); 创建数据库连接并打开该连接 SqlTransaction objSqlTransaction = objSqlConnection.BeginTransaction(); 使用 BeginTransaction() 方法开始事务处理

39 39 SqlTransaction 类 3-3 objSqlCommand.Transaction = objSqlTransaction; 将 Command 对象的 Transaction 属性设置为事务处理对象 insertCommand = "Insert into Student (Id, Name)values (111, "Jim"); objSqlCommand.CommandText = insertCommand; objSqlCommand.ExecuteNonQuery (); 执行 SQL 命令 objSqlTransaction.Commit(); 如果操作过程中没有错误,则提交事务处理。如果 操作过程中发生错误,则回滚已完成的所有修改 objSqlConnection.Close(); 关闭连接

40 40 应用程序示例 7-1 在 VS.NET 2003 中新建一个名为示例 1 的基于 Windows 的项目。将默认窗体重命名为 frmFlight.cs 用户界面

41 41 应用程序示例 7-2 控件名称属性值 FormfrmFlightText 航班详细信息 ButtonbtnAddText 添加 (&A) btnModifyText 修改 (&M) btnDeleteText 删除 (&D) btnCancelText 取消 (&C) LabellblFlightCodeText 航班号: lblAirlineText 航空公司: lblDestinationText 终到站: lblSourceText 始发站: lblDepartureText 起飞: lblArrivalText 到达: ComboBoxcboSeatsText 座位数量:

42 42 应用程序示例 7-3 // Connection 对象和 Command 对象 private SqlConnection objSqlConnection; private SqlCommand objSqlCommand; // 类变量 private string insCmd; private string modCmd; private string delCmd; private void frmFlight_Load(object sender, System.EventArgs e) { // 初始化 connection 对象 objSqlConnection = new SqlConnection ("server = VIJAYK; database = Flights; uid = sa; pwd = playware"); // 将座位数量添加到组合框中 this.cboSeats.Items.Clear(); this.cboSeats.Items.Add("100"); this.cboSeats.Items.Add("150"); this.cboSeats.Items.Add("200"); this.btnModify.Enabled = false; this.btnDelete.Enabled = false; } 给组合框添加项并禁用按钮 初始化 connection 对象

43 43 应用程序示例 7-4 private void btnAdd_Click(object sender, System.EventArgs e) { // 插入命令 insCmd = "insert into FlightDetails values ('"+this.txtFlightCode.Text+"', '"+this.txtAirline.Text+"','“ +this.txtDestination.Text+"', '“+this.txtSource.Text+"','“ +this.txtArrival.Text+"', '"+this.txtDeparture.Text+"', “ +this.cboSeats.SelectedItem.ToString()+")"; // 初始化 command 对象 objSqlCommand = new SqlCommand(insCmd, objSqlConnection); 将插入命令和 connection 对 象传递给 command 对象 btnAdd Click 事件处理程序

44 44 应用程序示例 7-5 try { // 打开连接 objSqlConnection.Open(); // 执行插入语句 objSqlCommand.ExecuteNonQuery(); MessageBox.Show(“ 已成功添加记录 "); // 启用和禁用按钮 this.btnModify.Enabled = true; this.btnDelete.Enabled = true; this.btnAdd.Enabled = false; this.txtFlightCode.Enabled = false; } catch(SqlException ex) { MessageBox.Show(ex.Message); } finally { // 关闭连接 objSqlConnection.Close(); } 打开连接并执行 objSqlCommand 中的命令 btnAdd Click 事件处理程序

45 45 应用程序示例 7-6 private void btnModify_Click(object sender, System.EventArgs e) { modCmd = "update FlightDetails set Airline = '“ +this.txtAirline.Text+"', Destination = '“ +this.txtDestination.Text+"', Source = '"+this.txtSource.Text+"', Arrival = '"+this.txtArrival.Text+"', Departure = '"+this.txtDeparture.Text+"', TotalSeats = "+this.cboSeats.SelectedItem.ToString()+" where FlightCode like '"+this.txtFlightCode.Text+"'"; objSqlCommand = new SqlCommand(modCmd, objSqlConnection); try { objSqlConnection.Open(); objSqlCommand.ExecuteNonQuery(); MessageBox.Show(“ 已成功更新记录 "); } catch(SqlException ex) { MessageBox.Show(ex.Message); } finally { objSqlConnection.Close(); } 设置更新命令 btnModify Click 事件处理程序

46 46 Sample Application 7-7 private void btnDelete_Click(object sender, System.EventArgs e) { delCmd = "delete from FlightDetails where FlightCode like '“ +this.txtFlightCode.Text+"'"; MessageBox.Show(delCmd); // 初始化 command 对象 objSqlCommand = new SqlCommand(delCmd, objSqlConnection); try { // 初始化 DialogResult DialogResult objDialogResult = MessageBox.Show(“ 您确定要删除当前记录吗? ", “ 确认 ", MessageBoxButtons.YesNo); // 确定用户的响应 if (objDialogResult.Equals(DialogResult.Yes)) { objSqlConnection.Open(); objSqlCommand.ExecuteNonQuery(); MessageBox.Show(“ 已删除记录 "); btnModify.Enabled = false; } btnDelete Click 事件处理程序

47 47 总结 2-1 .NET framework 中的 ADO.NET 是一组类,允许 应用程序与数据库交互,以便检索和更新信息  DataSet 和.NET 数据提供程序是 ADO.NET 的 两个主要组件  每种.NET 数据提供程序都是由以下四个对象组 成:  Connection  Command  DataAdapter  DataReader

48 48 总结 2-2  Connection 对象用于在应用程序和数据库之间建 立连接  Command 对象允许向数据库传递请求、检索和 操纵数据库中的数据  事务处理是一组数据操作,这些操作要么必须全 部成功,要么必须全部失败,以保证数据的一致 性和完整性


Download ppt "ADO.NET – 连接数据库. 2 课程地位 STB SQL Server XML PSPM ASP.NET Oracle OOAD Computer Base HTML&JavaScript OOP\Java C C SQL Base JSP/Servlet EJB/WebService C#"

Similar presentations


Ads by Google