您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > C程序设计简明教程-第6章数据库编程
第六章数据库编程一、ADO.NET介绍ADO.NET是一组允许基于.NET的应用程序访问数据库以便读取和更新信息的类,要使用这些类需要引用System.Data命名空间。它以ActiveX数据对象(ADO)为基础以XML(扩展标记语言)为格式传送和接收数据,访问数据存储无需连接。(1)优点:互操作性性能可伸缩性标准化可编程能力(2)结构:如图1所示图1ADO.NET结构(3)ADO.NET访问数据库的过程如图2所示图2访问过程(4)数据库操作过程对于Insert,Update,Delete等单向操作,其过程如图3所示图3数据库操作模型-1对于Select的双向操作,其过程如图4所示图4数据库操作模型-2二、.NET数据提供程序ADO.NET允许在.NETFramwork中访问和数据库数据,它主要有两个组件:DataSet.NET数据提供程序,它又由:Connection、Command、DataReader、DataAdapter对象组成。目前,有四种类型的.NET数据提供程序,具体包括:SQLClient:位于System.Data.SqlClient,适用于SqlServers数据库7.0或以上版本OLEDB:位于System.Data.OleDb,用于连接可通过OLDDB提供程序访问的任何数据源,如access。Oracle:位于System.Data.OracleClient,适用于Oracle数据库。ODBC:位于System.Data.Odbc,允许通过ODBC驱动程序管理器来访问数据。访问过程如图5所示:图5数据访问过程其中:1,2,3是从服务器检索数据的过程;A、B是对数据库修改的过程。三、基本组件(1)Connection对象:用于应用程序和数据库之间的连接,每个数据提供程序都有自己的连接类,常见的如表1所示表2.NET提供程序及其连接类.NETFramework数据提供程序Connection类SQL数据提供程序SqlConnectionOLEDB数据提供程序OleDbConnectionOracle数据提供程序OracleConnectionODBC数据提供程序OdbcConnectionConnection对象的主要属性:ConnectionString:指定连接数据库的字符串描述。例如要连接到IP地址为123.111.101.200的sqlserver数据库Test,则可以这样书写连接字符串:SqlConnectionobjSqlConnection=newSqlConnection(server=123.111.101.200;uid=sa;pwd=password;database=Test);server为服务器的名字,可以采用IP地址和数据库服务器的名称两种形式。Database:与Connection对象连接的数据库。主要方法Close():关闭连接注意:在ADO.NET中,必须显式关闭连接,才能释放实际的数据库连接。Open():打开连接(2)Command对象指定数据库执行的操作。与Connection一样,不同的提供程序有不同的Command对象,如表3所示表3.NET提供程序及其命令类.NETFramework数据提供程序Command类SQL数据提供程序SqlCommandOLEDB数据提供程序OleDbCommandOracle数据提供程序OracleCommandODBC数据提供程序OdbcCommand与数据库建立连接后,可用Command对象执行命令并从数据源返回结果。属性:CommandText:欲执行的内容,可以是SQL语句或者存储过程名称CommandType:命令类型,如:StoreProcedure,TahleDirect和Text.Connection:使用的活动连接。方法:ExecuteNonQuery():返回受影响的行数ExecuteReader():返回DataReader类型值ExecuteScalar():返回第一行第一列示例1:用SQL语句的Command设置SqlCommandobjComm=newSqlCommand();objComm.CommandText=SQL语句;objComm.CommandType=CommandType.Text;objComm.Connection=objConnection;示例2:用存储过程的Command设置SqlCommandobjComm=newSqlCommand();objComm.CommandText=“sp_DeleteName;//Sp_DeleteName为创建的存储过程objComm.CommandType=CommandType.StoredProcedure;objComm.Connection=objConnection;Sp_DeleteName是在SQLServer服务器上创建的存储过程四、事务处理事务处理是一组数据操作,这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性。事务处理命令主要有:.Begin:在执行事务处理中的任何操作之前,必须使用Begin命令来开始事务处理。.Commit:在成功将所有修改都存储于数据库时,才算是提交了事务处理。.Rollback:由于在事务处理期间某个操作失败,而取消事务处理已做的所有修改,这时将发生回滚。表4列出了用于实现事务处理的类。表4事务类类说明OdbcTransaction表示对数据源进行的SQL事务处理OleDbTransaction表示对数据源进行的SQL事务处理OracleTransaction表示对数据库进行的事务处理SqlTransaction表示要对SQLServer数据库进行的Transact-SQL事务处理SqlTransaction类。属性Connection:获取与事务处理关联的SqlConnection对象。方法Save():保存所有提交的事务处理Commit():提交事务Rollback():撤消事务事务处理步骤。打开数据库连接SqlConnectionobjSqlConnection=newSqlConnection(server=SQLDB;uid=sa;pwd=password;database=pubs);objSqlConnection.Open();。开始事务SqlTransactionobjSqlTransaction=objSqlConnection.BeginTransaction();。执行操作objSqlCommand.Transaction=objSqlTransaction;insertCommand=InsertintoStudent(Id,Name)values(111,Jim);objSqlCommand.CommandText=insertCommand;objSqlCommand.ExecuteNonQuery();。提交事务//如果操作过程中没有错误,则提交事务处理。objSqlTransaction.Commit();//如果操作过程中发生错误,则回滚已完成的所有修改//objSqlTransaction.Rollback();。关闭连接objSqlConnection.Close();示例:以航空公司为例,演示如何建立连接以及如何插入、更新和删除记录。界面如图6所示。图6frmFlight窗体表5列出了所涉及到的控件及其属性表5所用控件控件名称属性值FormfrmFlightText航班详细信息ButtonbtnAddText添加(&A)btnModifyText修改(&M)btnDeleteText删除(&D)btnCancelText取消(&C)LabellblFlightCodeText航班号:lblAirlineText航空公司:lblDestinationText终到站:lblSourceText始发站:lblDepartureText起飞:lblArrivalText到达:ComboBoxcboSeatsText座位数量:主要代码//对象和变量声明//Connection对象和Command对象privateSqlConnectionobjSqlConnection;privateSqlCommandobjSqlCommand;//类变量privatestringinsCmd;privatestringmodCmd;privatestringdelCmd;在load事件中,进行连接privatevoidfrmFlight_Load(objectsender,System.EventArgse){//初始化connection对象objSqlConnection=newSqlConnection(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;}//添加记录代码privatevoidbtnAdd_Click(objectsender,System.EventArgse){//插入命令insCmd=insertintoFlightDetailsvalues('+this.txtFlightCode.Text+','+this.txtAirline.Text+','“+this.txtDestination.Text+','“+this.txtSource.Text+','“+this.txtArrival.Text+','+this.txtDeparture.Text+',“+this.cboSeats.SelectedItem.ToString()+);//初始化command对象objSqlCommand=newSqlCommand(insCmd,objSqlConnection);try{//打开连接objSqlConnection.Open();//执行插入语句objSqlCommand.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{//关闭连接objSqlConnection.Close();}}//更新记录代码privatevoidbtnModify_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+';objSqlCom
本文标题:C程序设计简明教程-第6章数据库编程
链接地址:https://www.777doc.com/doc-2907632 .html