ADONET连接数据库.ppt
ADO.NET连接数据库,西源软件培训中心,目标,了解ADO.NET 结构了解ADO.NET 的组件理解Command 对象和 Connection 对象理解ADO.NET 进行事务处理,ADO.NET 简介,以流的形式从文件中读写数据,少量数据,不适用于,大量数据,ADO.NET 简介,以流的形式从文件中读写数据,少量数据,不适用于,大量数据,中央数据库,要管理数据库,需要专门的软件应用程序,RDBMS,ADO.NET 简介,中央数据库,用户需要时,可以随时访问数据,用户计算机向数据库服务器发送请求,客户端,不同的访问方法和技术,ADO.NET,ADO.NET 简介,.NET Framework,ADO.NET,System.Data 命名空间,以 ActiveX 数据对象(ADO)为基础以 XML(扩展标记语言)为格式传送和接收数据,ADO.NET 的优点,互操作性性能可伸缩性标准化可编程能力,ADO.NET的结构,ADO.NET 对数据库的访问,将数据传递到用户界面时,ADO.NET 采用 XML 格式,数据已缓存,断开式数据结构,ADO.NET 对数据库的访问,对于Insert,Update,Delete 等单向操作,应用程序,数据库,1、用Connection.Open打开数据库,2、用DataAdaptor.Command或者 Command.Execute 执行命令,3、关闭数据库,Insert用InsertCommandDelete 用DeleteCommandUpdate用UpdateCommand,ADO.NET 对数据库的访问,应用程序,数据库,关闭数据库,1、用Connection.Open建立连接,2、用DataAdaptor.SelectCommand 执行命令,DataAdaptor.Fill,对于Select的双向操作,DataSet,知识点小结,引入ADO.NET的原因ADO.NET的优缺点ADO.NET的组成结构ADO.NET对数据库的调用过程,.NET 数据提供程序,ADO.NET,DataSet,.NET Framework 数据提供程序,1、SQLClient2、OLEDB3、Oracle4、ODBC,由以下各项组成的集合:,.NET 数据提供程序,客户端,服务器,数据集,2、将数据发送到数据集,A、客户端修改数据集,3、数据集传递给客户端,B、将修改后的数据集传递给服务器,1、客户端从服务器请求数据,1,2,3是从服务器检索数据的过程A、B是对数据库修改的过程,.NET 数据提供程序,用于 SQL Server 的.NET Framework 数据提供程序,命名空间,仅限于连接 SQL Server 数据库 7.0 或更高版本,.NET 数据提供程序,用于 OLEDB 的.NET Framework 数据提供程序,.NET 数据提供程序,用于 ODBC 的.NET Framework 数据提供程序的命名空间用于 Oracle 的.NET Framework 数据提供程序的命名空间,命名空间,命名空间,知识点小结,使用的名称空间SQL Server using OLE DB using Oracle using ODBC using,Connection 对象,在 ADO.NET 中,必须显式关闭连接,才能释放实际的数据库连接,Connection 对象,方法,Close(),Open(),属性,ConnectionString,Database,Connection 对象4-3,单击“数据”选项卡,SqlConnection,拖放,sqlConnection1 已添加,从列表中选择 SQL Server,指定用户名和密码,最后选择数据库,如果连接成功,则会显示一则消息,Connection 对象,使用代码编辑器,SqlConnection objSqlConnection=new SqlConnection(server=SQLDB;uid=sa;pwd=password;database=pubs);objSqlConnection.Open();,objSqlConnection 创建的连接对象名称,SQLDB 存储“pubs”数据库的服务器名称,也可以写成IP地址,如本地服务器可以有以下几种写法:1、(local)2、3、本地机子名称,uid,pwd 用户标识和密码,知识点小结,Connection对象的作用Connection对象的两种使用方法拖拉控件写代码四种典型的连接方式的应用名称空间和连接字符串的写法SqlConnectionOleDbConnectionOracleConnectionOdbcConnection,Command 对象,数据库,Command 对象指定要对数据库执行的操作,检索和操纵数据,Command,Command 对象,与数据库建立连接之后,可以使用 Command 对象执行命令并从数据源返回结果,Command 对象,方法,ExecuteNonQuery()返回受影响的行数,ExecuteScalar()返回第一行第一列,ExecuteReader()返回DataReader类型值,属性,CommandText欲执行的内容,可以是SQL语句或者存储过程名称,Connection,CommandType命令类型,Command 对象,用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服务器上创建的存储过程,Command 对象 6-4,单击“数据”选项卡,SqlCommand,拖放,已添加 sqlCommand1,将 sqlConnection1 设置为 sqlCommand1 的连接,在 CommandText 属性中键入“Insert into FlightDetails values()”,Command 对象,已添加“FlightDetails”表,单击该表中所有字段旁边的框,以指定要在其中插入新值的列,为每一列指定新值,Command 对象,使用代码编辑器,SqlCommand objSqlCommand=new SqlCommand(strSQL);,objSqlConnection 创建的 Command 对象名称,strSQL 任何有效的 SQL 语句,知识点小结,Command的作用Command的使用前提Connection打开Command的使用方法命令文本方式存储过程方式Command返回值类型返回受影响的行数返回第一行第一列返回DataReader,.NET 中的事务处理,肥皂,关系表,数据库,5,12439,12439,2004 年 10 月 30 日,已成功地完成对一个表的操作,但是关系表尚未更新,因此,数据会出现不一致的现象,不完整的,事务处理!,成功地进行整个操作或者取消整个操作,确保,事务处理是一组数据操作,这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性,.NET 中的事务处理,Begin:在执行事务处理中的任何操作之前,必须使用 Begin 命令来开始事务处理Commit:在成功将所有修改都存储于数据库时,才算是提交了事务处理Rollback:由于在事务处理期间某个操作失败,而取消事务处理已做的所有修改,这时将发生回滚,事务处理命令,.NET 中的事务处理,SqlTransaction 类,方法,属性,Save(),Rollback(),Commit(),Connection,SqlTransaction 类表示要对数据源进行的事务处理,SqlTransaction 类,在 ADO.NET 中实现事务处理时执行的步骤顺序,SqlConnection objSqlConnection=new SqlConnection(server=SQLDB;uid=sa;pwd=password;database=pubs);objSqlConnection.Open();,创建数据库连接并打开该连接,SqlTransaction objSqlTransaction=objSqlConnection.BeginTransaction();,使用 BeginTransaction()方法开始事务处理,SqlTransaction 类,objSqlCommand.Transaction=objSqlTransaction;,将 Command 对象的 Transaction 属性设置为事务处理对象,insertCommand=Insert into Student(Id,Name)values(111,Jim);objSqlCommand.CommandText=insertCommand;objSqlCommand.ExecuteNonQuery();,执行 SQL 命令,objSqlTransaction.Commit();,如果操作过程中没有错误,则提交事务处理。如果操作过程中发生错误,则回滚已完成的所有修改,objSqlConnection.Close();,关闭连接,应用程序示例,在 VS.NET 2003 中新建一个名为示例 1 的基于 Windows 的项目。将默认窗体重命名为 frmFlight.cs,用户界面,应用程序示例,应用程序示例,/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.Add(100);this.cboSeats.Items.Add(150);this.cboSeats.Items.Add(200);=false;=false;,给组合框添加项并禁用按钮,初始化 connection 对象,应用程序示例,private void btnAdd_Click(object sender,System.EventArgs e)/插入命令 insCmd=insert into FlightDetails values(+,+,“+,“+,“+,+,“+()+);/初始化 command 对象 objSqlCommand=new SqlCommand(insCmd,objSqlConnection);,将插入命令和 connection 对象传递给 command 对象,btnAdd Click 事件处理程序,应用程序示例 7-5,try/打开连接 objSqlConnection.Open();/执行插入语句 objSqlCommand.ExecuteNonQuery();MessageBox.Show(“已成功添加记录);/启用和禁用按钮=true;=true;=false;=false;catch(SqlException ex)MessageBox.Show(ex.Message);finally/关闭连接objSqlConnection.Close();,打开连接并执行 objSqlCommand 中的命令,btnAdd Click 事件处理程序,应用程序示例 7-6,private void btnModify_Click(object sender,System.EventArgs e)modCmd=update FlightDetails set Airline=“+,Destination=“+,Source=+,Arrival=+,Departure=+,TotalSeats=+()+where FlightCode like+;objSqlCommand=new SqlCommand(modCmd,objSqlConnection);tryobjSqlConnection.Open();objSqlCommand.ExecuteNonQuery();MessageBox.Show(“已成功更新记录);catch(SqlException ex)MessageBox.Show(ex.Message);finally objSqlConnection.Close();,设置更新命令,btnModify Click 事件处理程序,Sample Application 7-7,private void btnDelete_Click(object sender,System.EventArgs e)delCmd=delete from FlightDetails where FlightCode like“+;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 事件处理程序,总结,.NET framework 中的 ADO.NET 是一组类,允许应用程序与数据库交互,以便检索和更新信息DataSet 和.NET 数据提供程序是 ADO.NET 的两个主要组件每种.NET 数据提供程序都是由以下四个对象组成:ConnectionCommandDataAdapterDataReader,总结,Connection 对象用于在应用程序和数据库之间建立连接Command 对象允许向数据库传递请求、检索和操纵数据库中的数据事务处理是一组数据操作,这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性,