《数据库编程连接数据库.ppt》由会员分享,可在线阅读,更多相关《数据库编程连接数据库.ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库编程数据库编程-连接数据库连接数据库第八章第八章本章目标本章目标了解了解ADO.NET 结构结构了解了解ADO.NET 的组件的组件使用使用Command 对象和对象和 Connection 对象对象使用使用ADO.NET 进行事务处理进行事务处理2ADO.NET 简介简介 2-1中央数据库中央数据库用户需要时,可以随时访问数据用户计算机向数据库服务器发送请求客户端不同的访问方法和技术3ADO.NET 简介简介 2-2.NET FrameworkSystem.Data 命名空间以 ActiveX 数据对象 为基础以 XML(扩展标记语言)为格式传送和接收数据4ADO.NET 的优点的优点
2、互操作性互操作性性能性能可伸缩性可伸缩性标准化标准化可编程能力可编程能力5ADO.NET 对数据库的访问对数据库的访问(3-1)将数据传递到用户界面时,ADO.NET 采用 XML 格式数据已缓存6ADO.NET 对数据库的访问对数据库的访问(3-2)对于Insert,Update,Delete 等单向操作 应用程序应用程序应用程序应用程序 数据库数据库数据库数据库1、用Connection.Open打开数据库2、用DataAdaptor.Command或者 Command.Execute 执行命令3、关闭数据库Insert用InsertCommandDelete 用DeleteCommand
3、Update用UpdateCommand7ADO.NET 对数据库的访问对数据库的访问(3-3)应用程序应用程序应用程序应用程序 数据库数据库数据库数据库关闭数据库1、用Connection.Open建立连接2、用DataAdaptor.SelectCommand 执行命令DataAdaptor.Fill对于对于Select的双向操作的双向操作 DataSet8.NET 数据提供程序数据提供程序 5-1ConnectionConnectionCommandCommandDataReaderDataReaderDataAdapterDataAdapterADO.NETDataSet.NET Fr
4、amework 数据提供程序数据提供程序 1、SQLClient2、OLEDB3、Oracle4、ODBC由以下各项组成的集合:9.NET 数据提供程序数据提供程序 5-2 客户端服务器数据集2、将数据发送到数据集将数据发送到数据集A、客户端修改数据集客户端修改数据集3、数据集传递给客户端数据集传递给客户端B、将修改后的数据将修改后的数据集传递给服务器集传递给服务器1、客户端从服务器请求数据客户端从服务器请求数据1,2,3是从服务器检索数据的过程A、B是对数据库修改的过程10.NET 数据提供程序数据提供程序 5-3用于用于 SQL Server 的的.NET Framework 数据提供数据
5、提供程序程序System.Data.SqlClient 命名空间仅限于连接 SQL Server 数据库 7.0 或更高版本11.NET 数据提供程序数据提供程序 5-4用于用于 OLEDB 的的.NET Framework 数据提供数据提供程序程序12.NET 数据提供程序数据提供程序 5-5用于用于 ODBC 的的.NET Framework 数据提供数据提供程序的命名空间程序的命名空间用于用于 Oracle 的的.NET Framework 数据提数据提供程序的命名空间供程序的命名空间System.Data.Odbc 命名空间System.Data.OracleClient 命名空间13
6、知识点小结知识点小结使用的名称空间使用的名称空间SQL Serverusing System.Data.SqlClient OLE DB using System.Data.OleDb Oracleusing System.Data.OracleClientODBCusing System.Data.Odbc14为什么使用为什么使用 Connection应用程序应用程序数据源数据源数据源数据源请求数据请求数据Connection桥梁桥梁15示例示例1 代码分析代码分析关键代码回顾关键代码回顾/数据库连接字符串数据库连接字符串string connString=Data Source=.;Ini
7、tial Catalog=MySchool;User ID=sa;/创建创建 Connection 对象对象SqlConnection connection=new SqlConnection(connString);/打开数据库连接打开数据库连接connection.Open();MessageBox.Show(打开数据库连接成功打开数据库连接成功);/关闭数据库连接关闭数据库连接connection.Close();MessageBox.Show(关闭数据库连接成功关闭数据库连接成功);表示本机表示本机16Connection 主要成员主要成员必须显式关闭连接必须显式关闭连接属性属性说明说
8、明ConnectionString 连接字符串连接字符串方法方法说明说明Open打开数据库连接打开数据库连接Close关闭数据库连接关闭数据库连接17连接数据库步骤连接数据库步骤连接数据库的步骤:连接数据库的步骤:1、定义连接字符串、定义连接字符串2、创建、创建 Connection 对象对象3、打开与数据库的连接、打开与数据库的连接Data Source=服务器名服务器名;Initial Catalog=数据库名数据库名;User ID=用户名用户名;Pwd=密码密码SqlConnection connection=new SqlConnection(connString);连接字符串连接字
9、符串connection.Open();没有密码,可省略没有密码,可省略18Connection 对象对象命名空间命名空间对应的对应的 Connection 对象对象System.Data.SqlClient SqlConnectionSystem.Data.OleDbOleDbConnectionSystem.Data.Odbc OdbcConnectionSystem.Data.OracleClientOracleConnection不同命名空间的不同命名空间的 Connection 对象对象19小结小结连接到本机的连接到本机的 pubs 数据库数据库/连接字符串连接字符串string c
10、onnString=Data Source=.;Initial Catalog=pubs;User ID=sa;/创建创建Connection 对象对象 SqlConnection connection=new SqlConnection(connString);connection.Open();/打开数据库连接打开数据库连接connection.Close();/关闭数据库连接关闭数据库连接关键代码关键代码20为什么使用为什么使用 Command应用程序应用程序打开数据库打开数据库处理数据处理数据数据源数据源数据源数据源Connection怎样处理数据怎样处理数据执行命令并从数据源中返回结
11、果执行命令并从数据源中返回结果 21Command 的主要成员的主要成员属性属性说明说明Connection Command对象使用的数据库连接对象使用的数据库连接CommandText执行的执行的SQL语句语句方法方法说明说明 ExecuteNonQuery执行不返回行的语句,如执行不返回行的语句,如UPDATE等等ExecuteReader返回返回DataReader对象对象ExecuteScalar返回单个值,如执行返回单个值,如执行COUNT(*)22使用使用 Command 步骤步骤使用使用Command步骤:步骤:1、创建数据库连接、创建数据库连接2、定义、定义 SQL 语句语句3
12、、创建、创建 Command 对象对象4、执行命令、执行命令SqlConnection connection=new SqlConnection(connString);string sql=SELECT COUNT(*)FROM Student;connection.Open();/打开数据库连接打开数据库连接SqlCommand command=new SqlCommand(sql,connection);int num=(int)command.ExecuteScalar();执行命令前,必须打开数据库连接!执行命令前,必须打开数据库连接!要进行类型转换!要进行类型转换!23Comman
13、d 对象对象用用SQL 语语句的句的Command设设置置SqlCommand Comm=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=sqlCon
14、n;其中,其中,Sp_UpdateName是在是在SQL Server服服务务器上器上创创建的存建的存储过储过程程24综合示例综合示例完成系统登录功能完成系统登录功能1、验证管理员的用户名和密码是否存在、验证管理员的用户名和密码是否存在2、验证通过,显示管理员主窗体、验证通过,显示管理员主窗体处理登录按钮的处理登录按钮的 Click 事件事件定义一个定义一个 ValidateUser()方法方法需要需要 Connection 和和 Command 对象对象分两步实现验证分两步实现验证:1、建立数据库连接、建立数据库连接2、验证用户是否存在、验证用户是否存在 25用户验证方法框架用户验证方法框架
15、ValidateUser()方法框架方法框架1、验证的结果:通过,不通过、验证的结果:通过,不通过返回值为返回值为 bool 型型2、方法需要:、方法需要:用户名,密码,登录类型用户名,密码,登录类型值方式传参值方式传参3、不通过的原因:、不通过的原因:用户名或密码不存在、其他原因用户名或密码不存在、其他原因引用方式传参引用方式传参public bool ValidateUser(string loginType,string loginId,string loginPwd,ref string message)26用户验证方法具体实现用户验证方法具体实现第一步:建立数据库连接第一步:建立数据
16、库连接增加增加 DBHelper 类类第二步:查询用户是否存在第二步:查询用户是否存在SELECT COUNT(*)ExecuteScalar()方法查询方法查询ValidateUser()方法具体实现方法具体实现27小结小结/查询查询 Student 表使用的表使用的 SQL 语句语句string sql=string.Format(SELECT COUNT(*)FROM Student WHERE LogInId=0 AND LogInPwd=1,txtLogInId,txtLogInPwd);/使用的使用的 Command 对象对象SqlCommand command=new SqlCo
17、mmand(sql,DBHelper.connection);DBHelper.connection.Open();/执行查询,返回找到的个数执行查询,返回找到的个数count=(int)command.ExecuteScalar();增加验证用户的代码增加验证用户的代码28总结总结Connection 对象的什么方法用来打开和对象的什么方法用来打开和关闭数据库连接?关闭数据库连接?ExecuteScalar()方法返回什么?方法返回什么?29知识点小结知识点小结Connection对象的作用对象的作用Connection对象的两种使用方法对象的两种使用方法拖拉控件拖拉控件写代码写代码四种典型
18、的连接方式的应用名称空间和连接字符四种典型的连接方式的应用名称空间和连接字符串的写法串的写法SqlConnectionOleDbConnectionOracleConnectionOdbcConnection30.NET 中的事务处理中的事务处理 3-1帐单帐单编编号号 说明说明数量数量价格价格总计总计1肥皂肥皂520 100编号:编号:12439日期:日期:2004年年10月月30日日肥皂肥皂关系表关系表数据库512439124392004 年年 10 月月 30 日日已成功地完成对一个表的操作,但是关系表尚未更新,因此,数据会出现不一致的现象成功地进行整个操作或者取消整个操作 确保事务处理
19、是一组数据操作,这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性31.NET 中的事务处理中的事务处理 3-2lBegin:在执行事务处理中的任何操作之前,必须使用 Begin 命令来开始事务处理lCommit:在成功将所有修改都存储于数据库时,才算是提交了事务处理lRollback:由于在事务处理期间某个操作失败,而取消事务处理已做的所有修改,这时将发生回滚事务处理命令事务处理命令32.NET 中的事务处理中的事务处理 3-3类说明OdbcTransaction表示表示对对数据源数据源进进行的行的 SQL 事事务处务处理理OleDbTransaction表示表示对对数据
20、源数据源进进行的行的 SQL 事事务处务处理理OracleTransaction表示表示对对数据数据库进库进行的事行的事务处务处理理SqlTransaction表示要表示要对对 SQL Server 数据数据库进库进行的行的 Transact-SQL 事事务处务处理理33SqlTransaction 类类 3-1方法方法属性属性Save()Rollback()Commit()ConnectionSqlTransaction 类表示要对数据源进行的事务处理34SqlTransaction 类类 3-2在 ADO.NET 中实现事务处理时执行的步骤顺序SqlConnection sqlConn=n
21、ew SqlConnection(server=SQLDB;uid=sa;pwd=sa;database=pubs);sqlConn.Open();创建数据库连接并打开该连接SqlTransaction sqlTrans=sqlConn.BeginTransaction();使用 BeginTransaction()方法开始事务处理35SqlTransaction 类类 3-3Comm.Transaction=sqlTrans;将 Command 对象的 Transaction 属性设置为事务处理对象 insertCommand=Insert into Student(Id,Name)valu
22、es(200494012,“WangLi);Comm.CommandText=insertCommand;Comm.ExecuteNonQuery();执行 SQL 命令sqlTrans.Commit();如果操作过程中没有错误,则提交事务处理。如果操作过程中发生错误,则回滚已完成的所有修改sqlConn.Close();关闭连接36应用程序示例应用程序示例 7-1在 VS.NET 2005 中新建一个名为Example1 的基于 Windows 的项目。将默认窗体命名为 frmFlight.cs用户界面用户界面37应用程序示例应用程序示例 7-2控件名称属性值FormfrmFlightTex
23、t航班航班详细详细信息信息ButtonbutAddText添加添加(&A)butModifyText修改修改(&M)butDeleteText删删除除(&D)butCancelText取消取消(&C)LabellblFlightNoText航班号:航班号:lblAirlineText航空公司:航空公司:lblDestinationText终终到站:到站:lblSourceText始始发发站:站:lblDepartureText起起飞飞:lblArrivalText到达:到达:ComboBoxcboSeatsText座位数量:座位数量:38应用程序示例应用程序示例 7-3/Connection
24、对象和 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=Flights;uid=sa;pwd=sa);/将座位数量
25、添加到组合框中 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 对象39应用程序示例应用程序示例 7-4private void btnAdd_Click(object sender,System.EventArgs e)/插入命令 inst
26、rCmd=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 对象 sqlComm=new SqlCommand(instrCmd,sqlConn);将插入命令和 connec
27、tion 对象传递给 command 对象btnAdd Click 事件处理程序 40应用程序示例应用程序示例 7-5try /打开连接 sqlConn.Open();/执行插入语句 sqlComm.ExecuteNonQuery();MessageBox.Show(“已成功添加记录);/启用和禁用按钮 this.btnModify.Enabled=true;this.btnDelete.Enabled=true;this.btnAdd.Enabled=false;this.txtFlightCode.Enabled=false;catch(SqlException ex)MessageBox
28、.Show(ex.Message);finally /关闭连接sqlConn.Close();打开连接并执行 sqlComm 中的命令btnAdd Click 事件处理程序 41应用程序示例应用程序示例 7-6private void btnModify_Click(object sender,System.EventArgs e)modCmd=update FlightDetails set Airline=“+this.txtAirline.Text+,Destination=“+this.txtDestination.Text+,Source=+this.txtSource.Text+,
29、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)Messag
30、eBox.Show(ex.Message);finally sqlConn.Close();设置更新命令btnModify Click 事件处理程序42Sample Application 7-7private void btnDelete_Click(object sender,System.EventArgs e)delCmd=delete from FlightDetails where FlightCode like“+this.txtFlightCode.Text+;MessageBox.Show(delCmd);/初始化 command 对象sqlComm=new SqlComma
31、nd(delCmd,sqlConn);try/初始化 DialogResult DialogResult objDialogResult=MessageBox.Show(“您确定要删除当前记录吗?,“确认,MessageBoxButtons.YesNo);/确定用户的响应 if(objDialogResult.Equals(DialogResult.Yes)sqlConn.Open();sqlComm.ExecuteNonQuery();MessageBox.Show(“已删除记录);btnModify.Enabled=false;btnDelete Click 事件处理程序43总结总结 2-
32、1.NET framework 中的中的 ADO.NET 是一组是一组类,允许应用程序与数据库交互,以便检索和更类,允许应用程序与数据库交互,以便检索和更新信息新信息DataSet 和和.NET 数据提供程序是数据提供程序是 ADO.NET 的两个主要组件的两个主要组件每种每种.NET 数据提供程序都是由以下四个对象数据提供程序都是由以下四个对象组成:组成:ConnectionCommandDataAdapterDataReader44总结总结 2-2Connection 对象用于在应用程序和数据库之对象用于在应用程序和数据库之间建立连接间建立连接Command 对象允许向数据库传递请求、检索对象允许向数据库传递请求、检索和操纵数据库中的数据和操纵数据库中的数据事务处理是一组数据操作,这些操作要么必须全事务处理是一组数据操作,这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致部成功,要么必须全部失败,以保证数据的一致性和完整性性和完整性45