数据库编程-连接数据库_第1页
数据库编程-连接数据库_第2页
数据库编程-连接数据库_第3页
数据库编程-连接数据库_第4页
数据库编程-连接数据库_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中国科学技术大学网络学院中国科学技术大学网络学院数据库编程数据库编程-连接数据库连接数据库第六章第六章2本章目标本章目标了解了解ADO.NET 结构结构了解了解ADO.NET 的组件的组件使用使用Command 对象和对象和 Connection 对象对象使用使用ADO.NET 进行事务处理进行事务处理3ADO.NET 简介简介 2-1中央数据库中央数据库用户需要时,可以随时访问数据用户计算机向数据库服务器发送请求客户端不同的访问方法和技术4ADO.NET 简介简介 2-2.NET FrameworkSystem.Data 命名空间以 ActiveX 数据对象 (ADO) 为基础以 XML(扩

2、展标记语言)为格式传送和接收数据5ADO.NET 的优点的优点互操作性互操作性性能性能可伸缩性可伸缩性标准化标准化可编程能力可编程能力6ADO.NET 对数据库的访问对数据库的访问(3-1)将数据传递到用户界面时, ADO.NET 采用 XML 格式数据已缓存7ADO.NET 对数据库的访问对数据库的访问(3-2)对于Insert,Update,Delete 等单向操作 1、用Connection.Open打开数据库2、用DataAdaptor.Command或者 Command.Execute 执行命令3、关闭数据库Insert用InsertCommandDelete 用DeleteComm

3、andUpdate用UpdateCommand8ADO.NET 对数据库的访问对数据库的访问(3-3) 关闭数据库1、用Connection .Open建立连接2、用DataAdaptor.SelectCommand 执行命令DataAdaptor.Fill对于对于Select的双向操作的双向操作 DataSet9.NET 数据提供程序数据提供程序 5-1ConnectionCommandDataReaderDataAdapterADO.NETDataSet.NET Framework 数据提供程序数据提供程序 1、SQLClient2、OLEDB3、Oracle4、ODBC由以下各项组成的集

4、合:10.NET 数据提供程序数据提供程序 5-2 客户端服务器数据集2、将数据发送到数据集将数据发送到数据集A、客户端修改数据集客户端修改数据集3、数据集传递给客户端数据集传递给客户端B、将修改后的数据将修改后的数据集传递给服务器集传递给服务器1、客户端从服务器请求数据客户端从服务器请求数据1,2,3是从服务器检索数据的过程A、B是对数据库修改的过程11.NET 数据提供程序数据提供程序 5-3用于用于 SQL Server 的的 .NET Framework 数据提供程序数据提供程序System.Data.SqlClient 命名空间仅限于连接 SQL Server 数据库 7.0 或更高

5、版本12.NET 数据提供程序数据提供程序 5-4用于用于 OLEDB 的的 .NET Framework 数据提供程序数据提供程序13.NET 数据提供程序数据提供程序 5-5用于用于 ODBC 的的 .NET Framework 数据提供程序的命名空间数据提供程序的命名空间用于用于 Oracle 的的 .NET Framework 数据提供程序的命名空间数据提供程序的命名空间System.Data.Odbc 命名空间System.Data.OracleClient 命名空间14知识点小结知识点小结使用的名称空间使用的名称空间SQL Serverusing System.Data.SqlCl

6、ient OLE DB using System.Data.OleDb Oracle using System.Data.OracleClientODBCusing System.Data.Odbc15为什么使用为什么使用 Connection应用程序应用程序请求数据请求数据Connection桥梁桥梁16示例示例1 代码分析代码分析关键代码回顾关键代码回顾/ 数据库连接字符串数据库连接字符串string connString = Data Source= . ;Initial Catalog=MySchool;User ID=sa;/ 创建创建 Connection 对象对象SqlConne

7、ction connection = new SqlConnection(connString); / 打开数据库连接打开数据库连接connection.Open();MessageBox.Show(打开数据库连接成功打开数据库连接成功); / 关闭数据库连接关闭数据库连接connection.Close();MessageBox.Show(关闭数据库连接成功关闭数据库连接成功);表示本机表示本机17Connection 主要成员主要成员必须显式关闭连接必须显式关闭连接属性属性说明说明ConnectionString 连接字符串连接字符串方法方法说明说明Open打开数据库连接打开数据库连接Cl

8、ose关闭数据库连接关闭数据库连接18连接数据库步骤连接数据库步骤连接数据库的步骤:连接数据库的步骤:1、定义连接字符串、定义连接字符串2、创建、创建 Connection 对象对象3、打开与数据库的连接、打开与数据库的连接Data Source=服务器名服务器名;Initial Catalog=数据库名数据库名; User ID=用户名用户名;Pwd=密码密码SqlConnection connection = new SqlConnection(connString);连接字符串连接字符串connection.Open( );没有密码,可省略没有密码,可省略19Connection 对象对

9、象命名空间命名空间对应的对应的 Connection 对象对象System.Data.SqlClient SqlConnectionSystem.Data.OleDbOleDbConnectionSystem.Data.Odbc OdbcConnectionSystem.Data.OracleClientOracleConnection不同命名空间的不同命名空间的 Connection 对象对象20小结小结连接到本机的连接到本机的 pubs 数据库数据库/ 连接字符串连接字符串string connString = Data Source=.;Initial Catalog=pubs;User

10、 ID=sa;/ 创建创建Connection 对象对象 SqlConnection connection = new SqlConnection(connString);connection.Open( ); / 打开数据库连接打开数据库连接connection.Close( ); / 关闭数据库连接关闭数据库连接关键代码关键代码21为什么使用为什么使用 Command应用程序应用程序打开数据库打开数据库处理数据处理数据Connection怎样处理数据怎样处理数据执行命令并从数据源中返回结果执行命令并从数据源中返回结果 22Command 的主要成员的主要成员属性属性说明说明Connecti

11、on Command对象使用的数据库连接对象使用的数据库连接CommandText执行的执行的SQL语句语句方法方法说明说明 ExecuteNonQuery执行不返回行的语句,如执行不返回行的语句,如UPDATE等等ExecuteReader返回返回DataReader对象对象ExecuteScalar返回单个值,如执行返回单个值,如执行COUNT(*)23使用使用 Command 步骤步骤使用使用Command步骤:步骤:1、创建数据库连接、创建数据库连接2、定义、定义 SQL 语句语句3、创建、创建 Command 对象对象4、执行命令、执行命令SqlConnection connecti

12、on = new SqlConnection(connString);string sql = SELECT COUNT(*) FROM Student;connection.Open();/ 打开数据库连接打开数据库连接SqlCommand command = new SqlCommand(sql, connection);int num = (int)command.ExecuteScalar();执行命令前,必须打开数据库连接!执行命令前,必须打开数据库连接!要进行类型转换!要进行类型转换!24Command 对象对象用用SQL 语句的语句的Command设置设置SqlCommand C

13、omm=new SqlCommand();Comm.CommandText=SQL 语句语句;Comm.CommandType=CommandType.Text ;Comm. Connection=sqlConn;用存储过程的用存储过程的Command设置设置SqlCommand Comm=new SqlCommand();Comm.CommandText=sp_UpdateName;Comm.CommandType=CommandType. StoredProcedure ;Comm. Connection=sqlConn;其中,其中,Sp_UpdateName是在是在SQL Server服

14、务器上创建的存储过程服务器上创建的存储过程25综合示例综合示例完成系统登录功能完成系统登录功能1、验证管理员的用户名和密码是否存在、验证管理员的用户名和密码是否存在2、验证通过,显示管理员主窗体、验证通过,显示管理员主窗体处理登录按钮的处理登录按钮的 Click 事件事件定义一个定义一个 ValidateUser() 方法方法需要需要 Connection 和和 Command 对象对象分两步实现验证分两步实现验证:1、建立数据库连接、建立数据库连接2、验证用户是否存在、验证用户是否存在 26用户验证方法框架用户验证方法框架ValidateUser() 方法框架方法框架1、验证的结果:通过,不

15、通过、验证的结果:通过,不通过返回值为返回值为 bool 型型2、方法需要:、方法需要: 用户名,密码,登录类型用户名,密码,登录类型值方式传参值方式传参3、不通过的原因:、不通过的原因: 用户名或密码不存在、其他原因用户名或密码不存在、其他原因引用方式传参引用方式传参public bool ValidateUser(string loginType, string loginId, string loginPwd, ref string message) 27用户验证方法具体实现用户验证方法具体实现第一步:建立数据库连接第一步:建立数据库连接增加增加 DBHelper 类类第二步:查询用户是

16、否存在第二步:查询用户是否存在SELECT COUNT(*)ExecuteScalar() 方法查询方法查询ValidateUser() 方法具体实现方法具体实现28小结小结/ 查询查询 Student 表使用的表使用的 SQL 语句语句string sql = string.Format( SELECT COUNT(*) FROM Student WHERE LogInId=0 AND LogInPwd=1,txtLogInId, txtLogInPwd);/ 使用的使用的 Command 对象对象SqlCommand command = new SqlCommand(sql, DBHelp

17、er.connection);DBHelper.connection.Open();/ 执行查询,返回找到的个数执行查询,返回找到的个数count = (int)command.ExecuteScalar();增加验证用户的代码增加验证用户的代码29总结总结Connection 对象的什么方法用来打开和关闭数据库连接?对象的什么方法用来打开和关闭数据库连接?ExecuteScalar()方法返回什么?方法返回什么?30知识点小结知识点小结Connection对象的作用对象的作用Connection对象的两种使用方法对象的两种使用方法拖拉控件拖拉控件写代码写代码四种典型的连接方式的应用名称空间和

18、连接字符串的写法四种典型的连接方式的应用名称空间和连接字符串的写法SqlConnectionOleDbConnectionOracleConnectionOdbcConnection31.NET 中的事务处理中的事务处理 3-1帐单帐单编编号号 说明说明数量数量价格价格总计总计1肥皂肥皂520 100编号:编号:12439日期:日期: 2004年年10月月30日日肥皂肥皂关系表关系表数据库512439124392004 年年 10 月月 30 日日已成功地完成对一个表的操作,但是关系表尚未更新,因此,数据会出现不一致的现象成功地进行整个操作或者取消整个操作 确保事务处理是一组数据操作,这些操作

19、要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性32.NET 中的事务处理中的事务处理 3-2lBegin: 在执行事务处理中的任何操作之前,必须使用 Begin 命令来开始事务处理lCommit: 在成功将所有修改都存储于数据库时,才算是提交了事务处理lRollback: 由于在事务处理期间某个操作失败,而取消事务处理已做的所有修改,这时将发生回滚事务处理命令事务处理命令33.NET 中的事务处理中的事务处理 3-3类说明OdbcTransaction表示对数据源进行的表示对数据源进行的 SQL 事务处理事务处理OleDbTransaction表示对数据源进行的表示对数据源进行

20、的 SQL 事务处理事务处理OracleTransaction表示对数据库进行的事务处理表示对数据库进行的事务处理SqlTransaction表示要对表示要对 SQL Server 数据库进行的数据库进行的 Transact-SQL 事务处理事务处理34SqlTransaction 类类 3-1方法方法属性属性Save( )Rollback( )Commit( )ConnectionSqlTransaction 类表示要对数据源进行的事务处理35SqlTransaction 类类 3-2在 ADO.NET 中实现事务处理时执行的步骤顺序SqlConnection sqlConn = new S

21、qlConnection(server=SQLDB; uid=sa; pwd=sa; database=pubs);sqlConn.Open();创建数据库连接并打开该连接SqlTransaction sqlTrans = sqlConn.BeginTransaction();使用 BeginTransaction() 方法开始事务处理36SqlTransaction 类类 3-3Comm.Transaction = sqlTrans; 将 Command 对象的 Transaction 属性设置为事务处理对象 insertCommand = Insert into Student (Id,

22、Name)values (200494012, “WangLi);Comm.CommandText = insertCommand;Comm.ExecuteNonQuery ();执行 SQL 命令sqlTrans.Commit();如果操作过程中没有错误,则提交事务处理。如果操作过程中发生错误,则回滚已完成的所有修改sqlConn.Close(); 关闭连接37应用程序示例应用程序示例 7-1在 VS.NET 2005 中新建一个名为Example1 的基于 Windows 的项目。将默认窗体命名为 frmFlight.cs用户界面用户界面38应用程序示例应用程序示例 7-2控件名称属性值F

23、ormfrmFlightText航班详细信息航班详细信息ButtonbutAddText添加添加(&A) butModifyText修改修改(&M)butDeleteText删除删除(&D)butCancelText取消取消(&C)LabellblFlightNoText航班号:航班号:lblAirlineText航空公司:航空公司:lblDestinationText终到站:终到站:lblSourceText始发站:始发站:lblDepartureText起飞:起飞:lblArrivalText到达:到达:ComboBoxcboSeatsText座位数量:座位数量:39应用程序示例应用程序示

24、例 7-3/ Connection 对象和 Command 对象private SqlConnection sqlConn;private SqlCommand sqlComm; / 类变量private string instrCmd;private string modCmd;private string delCmd;private void frmFlight_Load(object sender, System.EventArgs e) / 初始化 connection 对象 sqlConn = new SqlConnection (server = jeny; database =

25、 Flights; uid = sa; pwd = sa); / 将座位数量添加到组合框中 this.cboSeats.Items.Clear(); this.cboSeats.Items.Add(“200); this.cboSeats.Items.Add(“250); this.cboSeats.Items.Add(“300); this.btnModify.Enabled = false; this.btnDelete.Enabled = false;给组合框添加项并禁用按钮初始化 connection 对象40应用程序示例应用程序示例 7-4private void btnAdd_Cl

26、ick(object sender, System.EventArgs e)/ 插入命令 instrCmd = 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()+);/ 初始化 comman

27、d 对象 sqlComm = new SqlCommand(instrCmd, sqlConn);将插入命令和 connection 对象传递给 command 对象btnAdd Click 事件处理程序 41应用程序示例应用程序示例 7-5try / 打开连接 sqlConn.Open(); / 执行插入语句 sqlComm.ExecuteNonQuery(); MessageBox.Show(“已成功添加记录); / 启用和禁用按钮 this.btnModify.Enabled = true; this.btnDelete.Enabled = true; this.btnAdd.Enabl

28、ed = false; this.txtFlightCode.Enabled = false;catch(SqlException ex) MessageBox.Show(ex.Message);finally / 关闭连接sqlConn.Close();打开连接并执行 sqlComm 中的命令btnAdd Click 事件处理程序 42应用程序示例应用程序示例 7-6private void btnModify_Click(object sender, System.EventArgs e)modCmd = update FlightDetails set Airline = “+this.

29、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+;sqlComm = new SqlCommand(modCmd, sqlConn);trysqlConn.Open();sqlComm.ExecuteNonQuery();MessageBox.Show(“已成功更新记录);catch(SqlException ex) MessageBox.Show(ex.Message);finally sqlConn.Close();设置更新命令btnModify Click

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论