[工学]《动态web数据库技术——基于jsp和xml技术实现》-9xml与数据库

上传人:tia****nde 文档编号:70375480 上传时间:2019-01-16 格式:PPT 页数:65 大小:782.81KB
返回 下载 相关 举报
[工学]《动态web数据库技术——基于jsp和xml技术实现》-9xml与数据库_第1页
第1页 / 共65页
[工学]《动态web数据库技术——基于jsp和xml技术实现》-9xml与数据库_第2页
第2页 / 共65页
[工学]《动态web数据库技术——基于jsp和xml技术实现》-9xml与数据库_第3页
第3页 / 共65页
[工学]《动态web数据库技术——基于jsp和xml技术实现》-9xml与数据库_第4页
第4页 / 共65页
[工学]《动态web数据库技术——基于jsp和xml技术实现》-9xml与数据库_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《[工学]《动态web数据库技术——基于jsp和xml技术实现》-9xml与数据库》由会员分享,可在线阅读,更多相关《[工学]《动态web数据库技术——基于jsp和xml技术实现》-9xml与数据库(65页珍藏版)》请在金锄头文库上搜索。

1、王红,第9章 XML与数据库,2019/1/16,2,主要内容,第9章 XML与数据库 9.1 借助XML文档实现数据库之间数据互换 9.2 文档结构与数据库结构的映射 9.3 SQL Server对XML的支持 9.4 XML数据库 9.5 小 结,2019/1/16,3,当存在大量数据需要处理分析的话,最好是把这些数据放到数据库中 几乎所有大型应用系统都是和数据库相关联的,所以如果XML需要在这些领域大展宏图的话,必须要和数据库相联系,2019/1/16,4,9.1 借助XML文档实现数据库之间数据互换,XML提供了一种连接关系数据库和面向对象数据库以及其他数据库管理系统之间的纽带 关系数

2、据库和面向对象数据库首先需要将数据从数据库中提取出来,经过转换或直接以XML数据形式发布到网上(局域网或Internet网),然后相互交换数据,经应用层系统处理后在转存入库 开发一个访问数据库的XML应用系统需要同时借助XML编程接口和数据库编程接口,前者用于对XML文档的解析、定位和查询,后者则是用于访问数据库,2019/1/16,5,XML和数据库,XML 文档是一个数据集合 优点 自我描述性 可移植性 以树结构描述数据 提供部分数据库的功能 缺点 数据存取慢 缺少数据库的功能,2019/1/16,6,XML和数据库,XML 文档在数据量较小和用户较少的环境中可以当作数据库使用 本地 XM

3、L 数据库 专门设计用于存储 XML 文档的数据库,2019/1/16,7,9.1.1 将XML数据插入数据库,将 XML 数据插入数据库的步骤: 使用 Class.forName() 方法加载缺省驱动器 使用 DriverManager 对象的 getConnection() 方法建立数据库连接 使用 Connection 对象创建 Statement 对象 将已解析的 XML 文档放在 Document 对象中 使用 getElementsByTagName() 方法检索其元素 使用 Insert 语句将数据插入数据库,2019/1/16,8,将XML中的数据插入数据库,2019/1/16

4、,9,实例,下面例xml2db.java,将candidate.xml文档中的数据存储到一个ACCESS数据库people中 表的结构如图9-1所示,2019/1/16,10,实例,import java.sql.*; import javax.xml.parsers.*; import org.w3c.dom.*; public class xml2db static Connection con; static String nm, add, tel, fax, email, sql; public static void main(String args) try Class.forNa

5、me(“sun.jdbc.odbc.JdbcOdbcDriver“ ); con = DriverManager.getConnection(“jdbc:odbc:people“, “, “ ); Statement stmt = con.createStatement();,2019/1/16,11,实例(续),DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); Document doc=buil

6、der.parse(“candidate.xml“); NodeList nl =doc.getElementsByTagName(“PERSON“); for (int i=0;inl.getLength();i+) Element node=(Element) nl.item(i); String nm = node.getElementsByTagName(“NAME“).item(0). getFirstChild().getNodeValue(); sql = “insert into people values(“+nm+“, “+add+“, “+tel+“,“+fax+“, “

7、+email+“)“; int ret = stmt.executeUpdate(sql); stmt.close(); con.close(); catch(Exception e)e.printStackTrace(); ,运行结果如图9-2所示,2019/1/16,12,图9-2 xml2db.java运行结果,2019/1/16,13,9.1.2 由数据库中数据生成XML文档,从数据库检索数据生成XML的步骤: 将文件头和根元素写入文件 使用 Class.forName() 方法加载缺省驱动程序 使用 DriverManager 对象的 getConnection() 方法建立数据库连

8、接 使用 Connection 对象创建 Statement 对象 使用 Statement 对象的 executeQuery 方法执行查询 从数据库提取数据并将其插入文件中 将结束元素写入文件,2019/1/16,14,用数据库中的数据生成XML文档,2019/1/16,15,实例,下面举例Sdudents.java,将一个ACCESS数据库students中数据存储到students.xml文档中 表的内容如图9-3所示,2019/1/16,16,实例,import java.sql.*; import java.io.*; import javax.xml.parsers.*; impo

9、rt javax.xml.transform.dom.*; import javax.xml.transform.stream.*; import javax.xml.transform.*; import org.w3c.dom.*; import org.xml.sax.*; File fl=new File(“students.xml“); fl.createNewFile(); FileWriter fw=new FileWriter(fl); Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); Connection con=DriverMan

10、ager.getConnection(“jdbc:odbc:aaa“,“,“); Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs=st.executeQuery(“select * from students“);,2019/1/16,17,实例,while(rs.next() fw.write(“); fw.write(“); String stud_id=rs.getString(“Stud_id“); fw.write(s

11、tud_id); fw.write(“); fw.write(“); String stud_name=rs.getString(“Stud_name“); fw.write(stud_name); fw.write(“); fw.write(“); 运行结果如图9-4所示,2019/1/16,18,图9-4 Sdudents.java运行结果,2019/1/16,19,实例,下面举例db2xml.java,用org.apache.crimson.tree包中的XmlDocument类的 write()方法将一个ACCESS数据库people中数据存储到candidate1.xml文档中的 表

12、的内容如图9-2所示 程序运行结果使candidate1.xml与前面用到的candidate.xml完全相同,2019/1/16,20,实例,import java.sql.*; import javax.xml.parsers.*; import org.apache.crimson.tree.*; import org.w3c.dom.*; import java.io.*; public class db2xml static String nm, add, tel, fax, email, sql; static String url = “jdbc:oracle:oci8:orad

13、b“; public static void main(String args) Element people, person, name, address, tel, fax, email; try Class.forName(“oracle.jdbc.driver.OracleDriver“); Connection con = DriverManager.getConnection(url, “scott“, “tiger“); Statement stmt = con.createStatement(); ResultSet results = stmt.executeQuery(“S

14、ELECT * FROM people“); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder=dbf.newDocumentBuilder(); Document doc = builder.newDocument(); people = doc.createElement(“PEOPLE“);,2019/1/16,21,实例(续),while (results.next() person = doc.createElement(“PERSON“); peopl

15、e.appendChild(person); name = doc.createElement(“NAME“); name.appendChild(doc.createTextNode(results.getString(“NAME“); person.appendChild(name); doc.appendChild(people); (XmlDocument)doc).write(System.out); catch(Exception e) e.printStackTrace(); ,2019/1/16,22,9.2 文档结构与数据库结构的映射,把数据存储到数据库中的时候,需要抛弃一个

16、文档的很多信息比如它的名称和DTD 同样,当从数据库中提取数据的时候,产生的XML文档通常不包含CDATA或者是实体使用的说明,而且节点下元素的排列位置只和数据库中记录的顺序位置一致 一个XML文档存储到数据库中,再由该数据库生成此XML文档,这前后两个文档格式几乎不可能完全一样,2019/1/16,23,9.2 文档结构与数据库结构的映射,为了在数据库和XML文档之间传递数据,必须在数据库数据模型和XML数据模型产生映射 关系数据库数据是结构化数据 XML文档属于半结构化的数据 将结构化数据与非结构化数据进行转换的时候,关键问题是建立不同结构层次之间的映射关系,及如何保留他们的语义约束信息,即如何将关系数据库表达的结构与约束映射为XML。 映射可以有两类:模板驱动和模型驱动。,2019/1/16,24,9.2.1 基于模板驱动的映射,基于模板的映射方法并不事先定义好XML文档与其他数据之间的映射关系,而是在XML文档中嵌入

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号