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

下载本文档

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

文档简介

数据库编程-连接数据库第六章1本章目标了解ADO.NET结构了解ADO.NET的组件使用Command对象和Connection对象使用ADO.NET进行事务处理2ADO.NET

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

简介2-2.NETFrameworkADO.NETSystem.Data命名空间以ActiveX

数据对象(ADO)为基础以XML(扩展标记语言)为格式传送和接收数据4ADO.NET

的优点互操作性性能可伸缩性标准化可编程能力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用DeleteCommandUpdate用UpdateCommand7ADO.NET对数据库的访问(3-3)应用程序

数据库关闭数据库1、用Connection.Open建立连接2、用DataAdaptor.SelectCommand执行命令DataAdaptor.Fill对于Select的双向操作

DataSet8.NET数据提供程序5-1ConnectionCommandDataReaderDataAdapterADO.NETDataSet.NETFramework数据提供程序

1、SQLClient2、OLEDB3、Oracle4、ODBC由以下各项组成的集合:9.NET数据提供程序5-2

客户端服务器数据集2、将数据发送到数据集A、客户端修改数据集3、数据集传递给客户端B、将修改后的数据集传递给服务器1、客户端从服务器请求数据1,2,3是从服务器检索数据的过程A、B是对数据库修改的过程10.NET数据提供程序5-3用于SQLServer的.NETFramework数据提供程序System.Data.SqlClient命名空间仅限于连接SQLServer数据库7.0或更高版本11.NET数据提供程序5-4用于OLEDB的.NETFramework数据提供程序12.NET数据提供程序5-5用于ODBC的.NETFramework数据提供程序的命名空间用于Oracle的.NETFramework数据提供程序的命名空间System.Data.Odbc命名空间System.Data.OracleClient命名空间13知识点小结使用的名称空间SQLServer usingSystem.Data.SqlClient

OLEDB usingSystem.Data.OleDb

Oracle usingSystem.Data.OracleClientODBC usingSystem.Data.Odbc14为什么使用Connection应用程序数据源请求数据Connection桥梁15示例1代码分析关键代码回顾//数据库连接字符串stringconnString="DataSource=.;InitialCatalog=MySchool;UserID=sa";//创建Connection对象SqlConnectionconnection=newSqlConnection(connString);

//打开数据库连接connection.Open();MessageBox.Show("打开数据库连接成功");

//关闭数据库连接connection.Close();MessageBox.Show("关闭数据库连接成功");表示本机16Connection主要成员必须显式关闭连接属性说明ConnectionString连接字符串方法说明Open打开数据库连接Close关闭数据库连接17连接数据库步骤连接数据库的步骤:1、定义连接字符串2、创建Connection对象3、打开与数据库的连接DataSource=服务器名;InitialCatalog=数据库名;UserID=用户名;Pwd=密码SqlConnectionconnection=newSqlConnection(connString);连接字符串connection.Open();没有密码,可省略18Connection对象命名空间对应的Connection对象System.Data.SqlClientSqlConnectionSystem.Data.OleDbOleDbConnectionSystem.Data.OdbcOdbcConnectionSystem.Data.OracleClientOracleConnection不同命名空间的Connection对象19小结连接到本机的pubs数据库//连接字符串stringconnString="DataSource=.;InitialCatalog=pubs;UserID=sa";//创建Connection对象

SqlConnectionconnection=newSqlConnection(connString);connection.Open();//打开数据库连接……connection.Close();//关闭数据库连接关键代码20为什么使用Command应用程序打开数据库处理数据……数据源Connection?怎样处理数据Command执行命令并从数据源中返回结果21Command的主要成员属性说明ConnectionCommand对象使用的数据库连接CommandText执行的SQL语句方法说明ExecuteNonQuery执行不返回行的语句,如UPDATE等ExecuteReader返回DataReader对象ExecuteScalar返回单个值,如执行COUNT(*)22使用Command步骤使用Command步骤:1、创建数据库连接2、定义SQL语句3、创建Command对象4、执行命令SqlConnectionconnection=newSqlConnection(connString);stringsql="SELECTCOUNT(*)FROMStudent";connection.Open();//打开数据库连接SqlCommandcommand=newSqlCommand(sql,connection);intnum=(int)command.ExecuteScalar();执行命令前,必须打开数据库连接!要进行类型转换!23Command对象用SQL语句的Command设置SqlCommandComm=newSqlCommand();Comm.CommandText="SQL语句";Comm.CommandType=CommandType.Text;Comm.Connection=sqlConn;用存储过程的Command设置SqlCommandComm=newSqlCommand();Comm.CommandText="sp_UpdateName";Comm.CommandType=CommandType.StoredProcedure;Comm.Connection=sqlConn;其中,Sp_UpdateName是在SQLServer服务器上创建的存储过程24综合示例完成系统登录功能1、验证管理员的用户名和密码是否存在2、验证通过,显示管理员主窗体处理登录按钮的Click事件定义一个ValidateUser()方法需要Connection和Command对象分两步实现验证:1、建立数据库连接2、验证用户是否存在25用户验证方法框架ValidateUser()方法框架1、验证的结果:通过,不通过返回值为bool型2、方法需要:用户名,密码,登录类型值方式传参3、不通过的原因:用户名或密码不存在、其他原因引用方式传参publicboolValidateUser(stringloginType,stringloginId,

stringloginPwd,refstringmessage){}26用户验证方法具体实现第一步:建立数据库连接增加DBHelper类第二步:查询用户是否存在SELECTCOUNT(*)ExecuteScalar()方法查询ValidateUser()方法具体实现27小结//查询Student表使用的SQL语句stringsql=string.Format("SELECTCOUNT(*)FROMStudentWHERELogInId='{0}'ANDLogInPwd='{1}'",txtLogInId,txtLogInPwd);//使用的Command对象SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);DBHelper.connection.Open();//执行查询,返回找到的个数count=(int)command.ExecuteScalar();增加验证用户的代码28总结Connection对象的什么方法用来打开和关闭数据库连接?ExecuteScalar()方法返回什么?29知识点小结Connection对象的作用Connection对象的两种使用方法拖拉控件写代码四种典型的连接方式的应用名称空间和连接字符串的写法SqlConnectionOleDbConnectionOracleConnectionOdbcConnection30.NET中的事务处理3-1帐单编号说明数量价格总计1肥皂520100编号:12439

日期:2004年10月30日肥皂关系表数据库512439124392004年10月30日已成功地完成对一个表的操作,但是关系表尚未更新,因此,数据会出现不一致的现象不完整的事务处理!成功地进行整个操作或者取消整个操作确保事务处理是一组数据操作,这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性31.NET中的事务处理3-2Begin:在执行事务处理中的任何操作之前,必须使用Begin命令来开始事务处理Commit:在成功将所有修改都存储于数据库时,才算是提交了事务处理Rollback:由于在事务处理期间某个操作失败,而取消事务处理已做的所有修改,这时将发生回滚事务处理命令32.NET中的事务处理3-3类说明OdbcTransaction表示对数据源进行的SQL事务处理OleDbTransaction表示对数据源进行的SQL事务处理OracleTransaction表示对数据库进行的事务处理SqlTransaction表示要对SQLServer数据库进行的Transact-SQL事务处理33SqlTransaction类3-1方法属性Save(

)Rollback(

)Commit(

)ConnectionSqlTransaction类表示要对数据源进行的事务处理34SqlTransaction类3-2在ADO.NET中实现事务处理时执行的步骤顺序SqlConnectionsqlConn=newSqlConnection ("server=SQLDB;uid=sa;pwd=sa;database=pubs");sqlConn.Open();创建数据库连接并打开该连接SqlTransactionsqlTrans= sqlConn.BeginTransaction();使用BeginTransaction()方法开始事务处理35SqlTransaction类3-3Comm.Transaction=sqlTrans;将Command对象的Transaction属性设置为事务处理对象insertCommand="InsertintoStudent (Id,Name)values(200494012,“WangLi");Comm.CommandText=insertCommand;Comm.ExecuteNonQuery();执行SQL命令sqlTrans.Commit();如果操作过程中没有错误,则提交事务处理。如果操作过程中发生错误,则回滚已完成的所有修改sqlConn.Close();关闭连接36应用程序示例7-1在VS.NET2005中新建一个名为Example1的基于Windows的项目。将默认窗体命名为frmFlight.cs用户界面37应用程序示例7-2控件名称属性值FormfrmFlightText航班详细信息ButtonbutAddText添加(&A)butModifyText修改(&M)butDeleteText删除(&D)butCancelText取消(&C)LabellblFlightNoText航班号:lblAirlineText航空公司:lblDestinationText终到站:lblSourceText始发站:lblDepartureText起飞:lblArrivalText到达:ComboBoxcboSeatsText座位数量:38应用程序示例7-3//Connection对象和Command对象privateSqlConnectionsqlConn;privateSqlCommandsqlComm;//类变量privatestringinstrCmd;privatestringmodCmd;privatestringdelCmd;privatevoidfrmFlight_Load(objectsender,System.EventArgse){//初始化connection对象sqlConn=newSqlConnection("server=jeny;database=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对象39应用程序示例7-4privatevoidbtnAdd_Click(objectsender,System.EventArgse){//插入命令instrCmd="insertintoFlightDetailsvalues('"+this.txtFlightCode.Text+"','"+this.txtAirline.Text+"','“+this.txtDestination.Text+"','“+this.txtSource.Text+"','“+this.txtArrival.Text+"','"+this.txtDeparture.Text+"',“+this.cboSeats.SelectedItem.ToString()+")";//初始化command对象sqlComm=newSqlCommand(instrCmd,sqlConn);

将插入命令和connection

对象传递给command

对象btnAddClick事件处理程序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(SqlExceptionex){MessageBox.Show(ex.Message);}finally{

//关闭连接

sqlConn.Close();}}打开连接并执行sqlComm

中的命令btnAddClick事件处理程序41应用程序示例7-6privatevoidbtnModify_Click(objectsender,System.EventArgse){modCmd="updateFlightDetailssetAirline='“+this.txtAirline.Text+"',Destination='“+this.txtDestination.Text+"',Source='"+this.txtSource.Text+"',Arrival='"+this.txtArrival.Text+"',Departure='"+this.txtDeparture.Text+"',TotalSeats="+this.cboSeats.SelectedItem.ToString()+"whereFlightCodelike'"+this.txtFlightCode.Text+"'";sqlComm=newSqlCommand(modCmd,sqlConn);try{

sqlConn.Open();

sqlComm.ExecuteNonQuery();

MessageBox.Show(“已成功更新记录");}catch(SqlExceptionex){MessageBox.Show(ex.Messag

温馨提示

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

最新文档

评论

0/150

提交评论