Java、XML与数据库编程实践

转载 2004年06月23日 12:11:00

作者:sirix   Emailnevinguo@163.com

 

在开始学习XML和数据库编程时,大家都对一大堆的文档和资料,无从入手。作者在工作中,正好要用到了这些,就手头的一个程序进行整理。其功能很简单,得用java语言,从access数据库中,把一些数据导入到SQL数据库中。

需求:

Access数据库表结构:

表:production

    产品型号   字符串型………产品编号

    零件图号   字符串型……….零件编号

    图号       字符串型……….工具编号

SQL数据表结构:

Project     产品表

    Id         int           标识

    Number…  varchar64     编号

Product    零件表

    Id         int           标识

    pid         int           产品标识号(与project表中的id相关联)

    Number…  varchar64     编号

Componenttype   与零件对应的生产工具表

    Id         int           标识

    aid         int           零件标识(与product表中的id关联)

    Number…  varchar64     编号

要求把原来的编号分别放到下面的SQL三个表格中,并用id关联起来。

考虑到数据库连接可能有变化,决定使用xml来配置数据连接。Dbs.xml文件内容如下:

<?xml version="1.0" encoding="GBK"?>

<dbcopy>  

  <source>

    <class>sun.jdbc.odbc.JdbcOdbcDriver</class>

    <url>jdbc:odbc:asrs</url>

    <user>""</user>

    <password>""</password>

  </source>

 

  <dest>

    <class>com.microsoft.jdbc.sqlserver.SQLServerDriver</class>

    <url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=vxms</url>

    <user>vxms</user>

    <password>vxms</password>

  </dest>

</dbcopy>

 

文件ConnPara.java,表示以类形式表示的数据库连接参数。

public class ConnPara

{

    String dbClass=null;

    String url=null;

    String username=null;

    String password=null; 

   

    public ConnPara()  {   }

   

    public ConnPara(String pdbClass,String purl,String pusername,String ppassword)

    {

        dbClass=pdbClass;

        url=purl;

        username=pusername;

        password=ppassword;    

    }

   

    public String getDbClass(){return dbClass;}

 

    public String getUrl(){return url;}

   

    public String getUsername(){return username;}

   

    public String getPassword(){return password;}

 

    public void setDbClass(String str){ dbClass=str;}

 

    public void setUrl(String str){ url=str;}

   

    public void setUsername(String str){username=str;}

   

    public void setPassword(String str){password=str;}

   

}

 

文件DbXmlParser.java封装了对xml文件的操作。

 

import javax.xml.parsers.*;

import org.w3c.dom.*;

import org.xml.sax.*;

import java.io.*;

 

public class DbXmlParser

{

   

    static  String  xmlfile;

    public DbXmlParser(String filename)

    {

        xmlfile=filename;

    }

   

    public static Element loadDocument()

    {

        try

        {

            //工厂

            DocumentBuilderFactory dcfactory=DocumentBuilderFactory.newInstance();

            //文档构造器

            DocumentBuilder db=dcfactory.newDocumentBuilder();

            //构造的文档

            Document doc=db.parse(xmlfile);

            //根元素

            Element root=doc.getDocumentElement();

            return root;

            }catch( ParserConfigurationException e){

            System.out.println("ParserConfigurationException");

            e.printStackTrace();

        }catch(IOException e)      {

            System.out.println("IOException ");

            e.printStackTrace();

        }catch(SAXException e)     {

            System.out.println("SAXException ");

            e.printStackTrace();

        }catch(Exception e) {

            e.printStackTrace();

        }

        return null;

    }

   

    public ConnPara getSource()

    {

        Element root=loadDocument();

        if( root==null) {  return null;   }

        NodeList nodes=root.getElementsByTagName("source");

        if(nodes.getLength()>0)

        {      

            Node node=nodes.item(0);

            String connclass=getChildElementValue(node,"class");

            String url=getChildElementValue(node,"url");

            String username=getChildElementValue(node,"user");

            String password=getChildElementValue(node,"password");

            return new ConnPara(connclass,url,username,password);

        }

        return null;      

    }  

   

    public  ConnPara getDest()

    {

        Element root=loadDocument();

        if( root==null) return null;

        NodeList nodes=root.getElementsByTagName("dest");

        if(nodes.getLength()>0)

        {      

            Node node=nodes.item(0);

            String connclass=getChildElementValue(node,"class");

            String url=getChildElementValue(node,"url");

            String username=getChildElementValue(node,"user");

            String password=getChildElementValue(node,"password");

            return new ConnPara(connclass,url,username,password);

        }

        return null;      

    }

       

    //得到子元素的值

    private  String getChildElementValue(Node node,String subTagName)

    {

            String returnString = "";

            if(node != null)

            {

                NodeList children = node.getChildNodes();

                for(int innerLoop = 0; innerLoop < children.getLength(); innerLoop++)

                {

                    Node child = children.item(innerLoop);

                    if(child == null || child.getNodeName() == null || !child.getNodeName().equals(subTagName))

                        continue;

                    Node grandChild = child.getFirstChild(); 

                    if(grandChild.getNodeValue() != null)

                        return grandChild.getNodeValue();

                }

            }

            return returnString;      

    }  

}

Java、XML与数据库编程实践

在开始学习XML和数据库编程时,大家都对一大堆的文档和资料,无从入手。作者在工作中,正好要用到了这些,就手头的一个程序进行整理。其功能很简单,得用java语言,从access数据库中,把一些数据导入到...
  • goldbox
  • goldbox
  • 2007年01月29日 16:25
  • 425

《JAVA并发编程实践》读书笔记(一)

《JAVA并发编程实践》读书笔记(一)2016年8月1日,“妮妲”冲击广东,全市放假1天。托“妮妲”的福,终于有空将近期的阅读整理一下。 最近利用业余时间重读了Brian Goetz的书,觉得受益匪...
  • youngweiquan
  • youngweiquan
  • 2016年08月02日 01:04
  • 712

Java、XML与数据库编程实践(一)

Java、XML与数据库编程实践(一) 作者:sirix   Email:nevinguo@163.com 在开始学习XML和数据库编程时,大家都对一大堆的文档和资料,无从入手。作者在工作中,正好要用...
  • sirix
  • sirix
  • 2004年06月15日 10:45
  • 851

Java、XML与数据库编程实践(三)

文件DbInput.java则是真正的数据拷贝部分: import java.sql.*; public class DbInput{        Connection src=null;    C...
  • sirix
  • sirix
  • 2004年06月15日 10:42
  • 765

Java、XML与数据库编程实践(四)

protected boolean alreadyin(String tname,String colname, String value)    {               int result...
  • sirix
  • sirix
  • 2004年06月15日 10:42
  • 776

Java、XML与数据库编程实践(二)

文件DbXmlParser.java封装了对xml文件的操作。 import javax.xml.parsers.*;import org.w3c.dom.*;import org.xml.sax.*...
  • sirix
  • sirix
  • 2004年06月15日 10:43
  • 751

java多线程与并发之java并发编程实践(一)

java并发编程实践基础(一) ---------- 1.继承Thread创建线程 继承java.lang.Thread类创建线程是最简单的一种方法,也最直接。下面创建一个MyThread1类,...
  • fhd001
  • fhd001
  • 2011年09月14日 18:12
  • 6631

《机器学习算法原理与编程实践》笔记

《机器学习算法原理与编程实践》笔记
  • qq_34400232
  • qq_34400232
  • 2017年09月13日 17:44
  • 388

机器学习 算法原理与编程实践 第一章 机器学习的基础

开篇引言:"基础决定高度,而不是高度决定基础!" 书中主要从 编码程序,数据结构,数学理论,数据处理和可视化等几个方面阐述机器学习的理论,然后扩展到概率论,数值分析,矩阵分析等知识引导我们进入机器学习...
  • u012017783
  • u012017783
  • 2016年11月27日 12:54
  • 388

XML与数据库

pre{border:1px solid silver;padding:0.5em;}XML与数据库copyright 1999-2005 by Ronald Bourret 原作最后更新: 2005...
  • onestab
  • onestab
  • 2006年11月20日 04:14
  • 28365
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java、XML与数据库编程实践
举报原因:
原因补充:

(最多只允许输入30个字)