【3-2】给出如下XML文件 要求可以通过解析操作将所有的相关数据插入到数据库表中

emp表结构

【3-2】给出如下XML文件 要求可以通过解析操作将所有的相关数据插入到数据库表中

emp表详细信息

【3-2】给出如下XML文件 要求可以通过解析操作将所有的相关数据插入到数据库表中

xml文件

【3-2】给出如下XML文件 要求可以通过解析操作将所有的相关数据插入到数据库表中

代码目录

【3-2】给出如下XML文件 要求可以通过解析操作将所有的相关数据插入到数据库表中

ReadXml.java(使用DOM方式,无需导入xml的相关jar包)

package witersen;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class ReadXml {
    public static final String dbDriver = "com.mysql.cj.jdbc.Driver";
    public static final String dbUrl = "jdbc:mysql://localhost:3306/xml?useSSL=false&serverTimezone=UTC";
    public static final String dbUser = "root";
    public static final String dbPass = "";

    public static void main(String[] args) throws Exception {
        /*db*/
        Connection conn = null;
        Class.forName(dbDriver);
        conn = DriverManager.getConnection(dbUrl, dbUser, dbPass);

        /*xml*/
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse("emp.xml");
        NodeList nl = doc.getElementsByTagName("emp");
        node(nl, conn);
    }

    public static void node(NodeList list, Connection conn) throws SQLException, ParseException {
        for (int i = 0; i < list.getLength(); i++) {

            /*Element方式*/
            // Element element = (Element)list.item(i);
            // NodeList childNodes = element.getChildNodes();

            Node node = list.item(i);
            NodeList childNodes = node.getChildNodes();

            PreparedStatement pstmt = null;
            ArrayList<String> lists = new ArrayList<String>();

            for (int j = 0; j < childNodes.getLength(); j++) {
                if (childNodes.item(j).getNodeType() == Node.ELEMENT_NODE) {
                    // System.out.print(childNodes.item(j).getNodeName() + ":");
                    // System.out.println(childNodes.item(j).getFirstChild().getNodeValue());
                    lists.add(childNodes.item(j).getFirstChild().getNodeValue());
                }
            }
            /*应该插入前判断主键是否存在 或者直接在数据表中去除主键 这里采取第二种*/
            String sql = "INSERT INTO xml.emp (empno, ename, job, hiredate, sal, comm) VALUES (?, ?, ?, ?, ?, ?);";
            pstmt = conn.prepareStatement(sql);

            pstmt.setString(1, lists.get(0));

            pstmt.setString(2, lists.get(1));

            pstmt.setString(3, lists.get(2));

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            java.util.Date date = sdf.parse(lists.get(3));
            long lg = date.getTime();
            pstmt.setDate(4, new java.sql.Date(lg));

            pstmt.setFloat(5, Integer.parseInt(lists.get(4)));

            pstmt.setString(6, lists.get(5));

            if (pstmt.executeUpdate() > 0) {
                System.out.println("第" + i + "次插入成功");
            }
        }
    }
}

原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com

(3)
witersen的头像witersen
上一篇 2020年10月22日 下午8:06
下一篇 2020年10月22日 下午8:10

相关推荐

发表回复

登录后才能评论

评论列表(1条)