您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 网络数据库实用技术(XML通讯录)实验报告
网络数据库实用技术实验报告——XML通讯录学院:交通运输管理学院专业:信息管理与信息系统指导老师:完成时间:2014.06小组成员:一、实验名称XML通讯录二、实验目的1、掌握XML文档的基本语法,能够得到格式良好的XML文档;2、能够了解并掌握XMLDTD的定义方法及其用途;三、实验实现程序有1.解析;2.从数据库反解析;3.按字符模糊查询;4.使用XQuery语句查询;5.添加;6.删除;7.修改;8.存入数据库八大功能。程序结构AddressList.java实现程序页面和一些功能;DatabaseToXMLWithDom.java实现数据库到xml文件的转换;XMLToDatabaseWithDom.java实现将xml文件更新到数据库中;Data.xml外部xml文件,存放通讯信息。数据库xmlcontact,只有一个表peoplePeople表结构:data.xml文件结构:?xmlversion=1.0encoding=UTF-8?addresslistpeoplename小福/namesex男/sexqq394902198/qqage22/ageaddress邵东/addressphone13755145985/phone/peoplepeoplename小郝/namesex男/sexqq997063499/qqage21/ageaddress衡阳/addressphone13755145526/phone/peoplepeoplename小明/namesex女/sexqq474292121/qqage21/ageaddress浏阳/addressphone15974291435/phone/peoplepeoplename老王/namesex女/sexqq649099268/qqage21/ageaddress河南/addressphone15116390925/phone/peoplepeoplename小罗/namesex男/sexqq997063499/qqage20/ageaddress衡阳/addressphone13755145526/phone/peoplepeoplename金中国/namesex男/sexqq687900/qqage60/ageaddress中国/addressphone654767/phone/people/addresslist程序界面:程序功能实现:1.解析功能在程序开启时或单击“显示xml文件所有信息”按钮触发解析功能。将data.xml文件中的信息解析到界面中的表格里。2.从数据库反解析;单击“从数据库中读取”按钮,通过引用DatabaseToXMLWithDom.java实现从数据库的反解析;3.按字符模糊查询;先在姓名框里输入姓名,通过单击“字符匹配查找”按钮实现字符模糊查询;如输入“小”,结果如图;如输入“小罗”,结果如图;4.使用XQuery语句查询;使用XQuery语言查询,查询语句为for$xindoc(\data.xml\)/addresslist/peoplewhere$x/name='+lookupName1+'return$x;输入“小福”,结果如下;输入“小”,结果如下;5.添加;在相应的框中输入信息后,单击“添加”按钮,结果如下;Data.xml文件中也添加了;peoplename哈哈哈哈哈/namesex女/sexqq1235345643/qqage23/ageaddress庄圩乡/addressphone1234555666/phone/people/addresslist6.删除;在表格中选中一条记录后,单击“删除”按钮,data.xml文件中相应的记录也被删除了;7.修改;在上面信息框中对应的信息修改,然后单击“修改”按钮,则datx.xml文件中相应的信息也发生改变;将地址“中国”修改成“韩国”,结果如图8.存入数据库。单击“存库”,则此时的data.xml文件中的数据则会解析到数据库xmlcontact中的people表中;如图;四.主要代码:AddressList.javapackagezy;importjavax.xml.xquery.XQConnection;importjavax.xml.xquery.XQDataSource;importjavax.xml.xquery.XQException;importjavax.xml.xquery.XQPreparedExpression;importjavax.xml.xquery.XQResultSequence;importorg.w3c.dom.Element;importnet.sf.saxon.xqj.SaxonXQDataSource;importjava.awt.event.*;importjavax.swing.*;importjava.awt.*;importjavax.xml.parsers.*;importjava.io.*;importorg.w3c.dom.*;importjavax.xml.transform.*;importjavax.xml.transform.dom.*;importjavax.xml.transform.stream.*;importjava.sql.SQLException;importjava.util.*;publicclassAddressListextendsJFrameimplementsActionListener{JButtonaddRecord=newJButton(添加);JButtonlookup=newJButton(字符匹配查找);JButtondelete=newJButton(刪除);JButtonshowAllResult=newJButton(显示xml文件所有信息);JButtonchange=newJButton(修改);JButtonCDB=newJButton(存库);JButtonDDB=newJButton(从数据库中读取);JButtonXQuery=newJButton(使用XQuery查询);JTextFieldqq=newJTextField(8);JTextFieldname=newJTextField(8);Object[]sex={男,女};JComboBoxgender=newJComboBox(sex);JTextFieldage=newJTextField(8);JTextFieldaddress=newJTextField(15);JTextFieldphone=newJTextField(10);Object[]columnNames={姓名,性别,QQ,年龄,地址,联系电话};Object[][]studentInfo=newObject[40][6];JTabletable=newJTable(studentInfo,columnNames);//内部类//table.addMouseListener();Documentdoc;publicAddressList(){setTitle(通讯录);setSize(810,600);setVisible(true);setResizable(false);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);qq.setBorder(BorderFactory.createTitledBorder(QQ));name.setBorder(BorderFactory.createTitledBorder(姓名));gender.setBorder(BorderFactory.createTitledBorder(性别));age.setBorder(BorderFactory.createTitledBorder(年龄));address.setBorder(BorderFactory.createTitledBorder(地址));phone.setBorder(BorderFactory.createTitledBorder(电话号码));Containercon1=getContentPane();con1.setLayout(newFlowLayout());con1.add(name);con1.add(age);con1.add(qq);con1.add(address);con1.add(phone);con1.add(gender);Containercon2=getContentPane();con2.setLayout(newFlowLayout());con2.add(XQuery);con2.add(lookup);con2.add(delete);con2.add(showAllResult);con2.add(addRecord);con2.add(change);con2.add(CDB);con2.add(DDB);Containercon3=getContentPane();con3.add(Center,newJScrollPane(table));validate();addRecord.addActionListener(this);lookup.addActionListener(this);delete.addActionListener(this);showAllResult.addActionListener(this);change.addActionListener(this);CDB.addActionListener(this);DDB.addActionListener(this);XQuery.addActionListener(this);//为表格添加单击事件匿名类实现table.addMouseListener(newMouseAdapter(){publicvoidmouseClicked(MouseEvente){//单击表格,文本框内对应显示表格内的信息;//System.out.println(table.getSelectedRow());name.setText((String)studentInfo[table.getSelectedRow()][0]);if(((String)studentInfo[table.getSelectedRow()][1]).equals(男))//判断是男还是女gender.setSelectedIndex(0);elsegender.setSelectedIndex(1);qq.setText((String)studentInfo[table.getSelectedRow()][2]);age.setText((String)studentInfo[table.getSelectedRow()][3]);address.setText((String)studentInfo[table.getSelectedRow()][4]);phone.setText((String)studentInfo[table.getSelectedRow()][5]);}});init();//初始化表格}publicstaticvoidmain(String[]args)//主函数;{newAddressList();}FilexmlFile=null
本文标题:网络数据库实用技术(XML通讯录)实验报告
链接地址:https://www.777doc.com/doc-6448405 .html