1 / 24

第 9 章 用 ADO.NET 访问数据库

第 9 章 用 ADO.NET 访问数据库. (3 hours). 主要内容. ADO.NET 与数据库概述 ADO.NET 类和对象 ADO.NET 基本数据库编程. 9.1 ADO.NET 与数据库概述. ADO.NET 是 .NET 的重要组成部分 , 是数据库程序和数据源沟通的桥梁, 它提供面向对象的数据结构,用来开发应用程序。 ADO.NET 架构希望能够在做处理数据的同时,不要一直和数据库联机,而导致一直占用资源。

mandy
Download Presentation

第 9 章 用 ADO.NET 访问数据库

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第9章 用ADO.NET访问数据库 (3 hours)

  2. 主要内容 • ADO.NET与数据库概述 • ADO.NET类和对象 • ADO.NET基本数据库编程

  3. 9.1 ADO.NET与数据库概述 • ADO.NET是.NET 的重要组成部分, • 是数据库程序和数据源沟通的桥梁, 它提供面向对象的数据结构,用来开发应用程序。 • ADO.NET架构希望能够在做处理数据的同时,不要一直和数据库联机,而导致一直占用资源。 ADO.NET将存取数据和数据处理分开,达到离线存取数据的目的,使得数据库能够执行其他操作。因此将ADO.NET分成 数据提供程序和DataSet数据集(数据处理)两个主要部分。

  4. 9.2 ADO.NET类和对象概述 • ADO.NET中的类可分为数据提供者对象和用户对象(数据类对象)两种. • 数据提供者对象专用于每一种类型的数据源,完成在数据源中实际的读取和写入工作。 • 用户对象是将数据读入到内存中后用来访问和操作数据的对象。用户对象以非连接方式使用:在数据库关闭后也可以使用内存中的数据。

  5. .NET数据提供者对象 • 常用的. NET数据提供者对象分为以下4种: • SQL Server数据源提供程序 • OLE DB数据源提供程序 • ORACLE数据源提供数据 • 与ODBC兼容的数据源提供程序。 所有的数据提供程序都位于System.Data命名空间中。

  6. .NET数据提供者对象 • Connection对象 • Command对象 • DataReader对象 • DataAdapter对象

  7. 用户对象(数据类对象) • 它为数据库中的信息存储一个本地拷贝,从而可以在切断数据库连接时处理这个信息。可以按任何顺序读行,按灵活的方式搜索、排序和过滤这些行,甚至可以改变这些行,然后将所做的改变同步到数据库中,主要包含以下几种对象: • DataSet对象 • DataTable对象 • DataRow对象 • DataColumn对象

  8. 9.3 ADO.NET基本数据库编程 • 常用的数据库编程包括连接数据库、插入新的数据、删除数据和修改数据,即执行SQL语法中的Insert、Delete、 Update语句。

  9. 连接数据库—见read_access (Do it) • 进行ADO.NET的开发首先需要进行数据库的连接。下面的代码是一个连接字符串样本,用来访问access数据库。 static private string GetConnectionString() { //适应于SQL Server数据库 return @"server=localhost;database=Northwind;uid=sa;pwd=sa"; //适应于Access等数据库 return @"Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\Student.mdb"; } 其中C:\ Student.mdb为存放Access数据库文件的位置。

  10. read_access 1 c:\windows\system32\msjetoledb40.dll //1 连接数据库的字符串 string strcon = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\Student.mdb"; //2 创建Connection对象,并连接到数据库 OleDbConnection myConnection = new OleDbConnection(strcon); //3 创建Command对象 OleDbCommand myCommand =myConnection.CreateCommand(); //4 Command对象的SQL语句 myCommand.CommandText ="select * from Student";

  11. using System.Data;using System.Data.OleDb; //5 用Connection对象的Open()方法打开数据库 myConnection.Open(); //6 用Command对象的ExecuteReader()方法执行select OleDbDataReader myDataReader = myCommand.ExecuteReader(); //7 读一行 for(int i=0; i<10; i++) { myDataReader.Read(); Console.WriteLine(myDataReader["Id"]); Console.WriteLine(myDataReader["Name"]); } //8 关闭 myDataReader.Close(); myConnection.Close();

  12. SQL Server (See it) 1) 在SQL Server中建student数据库,并添加数据。 2)C# code: static void LoadDB_student() { string strcon = @"server=localhost; database= student; uid=sa; pwd=123"; SqlConnection mySqlConnection = new SqlConnection(strcon); SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); string commandString = "select * from Customers where sno=1"; mySqlCommand.CommandText = commandString; mySqlConnection.Open(); SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();

  13. SQL Server 2 mySqlDataReader.Read(); Console.WriteLine(mySqlDataReader[“sno"]); Console.WriteLine(mySqlDataReader[“sname"]); // 关闭数据库连接 mySqlDataReader.Close(); mySqlConnection.Close();

  14. 插入新的数据记录 使用Command对象的ExecuteNonQuery()方法来实现插入数据操作,用SQL的Insert语句来设定具体的要插入的新记录内容。 //1 连接数据库的字符串 String connectionString = @"server=localhost;database=student;uid=sa;pwd=sa"; //2 创建SqlConnection对象,并连接到数据库 SqlConnection mySqlConnection = new SqlConnection(connectionString); //3 创建SqlCommand对象 SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); //4 创建SQL的Insert语句,在Student表中输入一条新的记录 string InsertString = "INSERT INTO Student(SName,Sex) VALUES('王二','男')"; mySqlCommand.CommandText = InsertString; //5 用Connection对象的Open()方法打开数据库 mySqlConnection.Open(); //6 用SqlCommand对象,插入一条新的记录 mySqlCommand.ExecuteNonQuery();

  15. 9.4 ADO.NET与XML • 可扩展标记语言(Extensible Markup Language,XML)在Internet中的地位已经确立,与XML的研究和应用正在兴起并在Internet时代背景下迅速发展。XML支持是ADO.NET的一个主要设计目标,它对于ADO.NET内部实现是非常重要的,本节主要介绍这两者的关联。

  16. 了解ADO.NET和XML • .NET框架提供了操作XML文档和数据的一组完整的类。XmlReader和XmlWriter对象以及这两个对象的派生类提供了读取XML和可选验证XML的能力。 • XmlDocument和XMLSchema对象及其相关类代表了XML本身,而XslTransform类和XPathNavigator类分别支持XSL转换(XSLT)和应用XML路径语言(XPath)查询。 • 除了提供操作XML数据的能力之外,XML标准还是.NET框架中数据转换和序列化的基础。多数时候这些都在后台进行,不过我们已经看到ADO.NET类型化数据集是使用XML架构表示的。 • 另外,ADO.NET数据集类对读写XML数据和架构提供直接支持,而且XmlDataDcoument提供同步XML数据和关系ADO.NET数据集的能力,这样就可以用XML和关系工具对数据的单个集合进行操作。

  17. DataSet对象对XML支持 • 在ADO.NET中对XML支持的主要是DataSet对象,DataSet具有WriteXml()方法,它将数据集的内容以XML文档的形式写出。 • ReadXml()方法也可以用于将XML文件的内容读入DataSet中。

  18. 从数据库中读取数据写到xml文件中 • class WriteXMLExample • { static void Main(string[] args) • { • string connectionString = @"server=localhost;database=Northwind;uid=sa;pwd=sa"; • SqlConnection mySqlConnection = new SqlConnection(connectionString); • //新建一个DataSet对象 • DataSet myDataSet = new DataSet(); • mySqlConnection.Open(); • string SQLString = "Select * from Shippers"; • //新建一个SqlDataAdapter对象,并执行了一个查询语句 • SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(SQLString, mySqlConnection); • //使用Fill方法把所有的数据放在myDataSet • mySqlDataAdapter.Fill(myDataSet); • //设置xml文件的路径为,当前程序所在的路径,xml文件名称为Shippers • string pathXML = System.Environment.CurrentDirectory + "\\Shippers.xml" ; • //调用WriteXML方法把查询结果放到Shippers.xml的XML文档中 • myDataSet.WriteXml(pathXML); • mySqlConnection.Close(); • } • }

  19. 程序运行结果

  20. 读取XML数据 • 使用DataSet的ReadXML()方法可以读出XML文档中的所有数据。本程序需将上一个程序生成的Shippers.xml复制到C盘根目录下。

  21. 程序代码 class ReadXMLExample { static void Main(string[] args) { string ShipperID , CompanyName, Phone; //新建一个DataSet对象 DataSet myDataSet = new DataSet(); //读取C盘根目录下的Shippers.xml文件,把文件内容填充到DataSet对象中 myDataSet.ReadXml("C:\\Shippers.xml"); //显示myDataSet对象中的数据 for(int i=0;i<myDataSet.Tables[0].Rows.Count;i++) { ShipperID = myDataSet.Tables[0].Rows[i]["ShipperID"].ToString(); CompanyName = myDataSet.Tables[0].Rows[i]["CompanyName"].ToString(); Phone =myDataSet.Tables[0].Rows[i]["Phone"].ToString(); Console.WriteLine("ShipperID = {0}, CompanyName = {1}, Phone = {2}", ShipperID, CompanyName, Phone); } } }

  22. 程序运行结果

  23. 作业 1)用ADO.NET读jzd.dbf数据库文件。 2)用文件方式读jzd.shp文件。 3)设计界面显示jzd.dbf, jzd.shp中的内容。

  24. 谢谢!

More Related