⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbrestore.java

📁 数据库备份程序示例
💻 JAVA
字号:
//Copyright 1998 John Wiley and Sons, Inc.import java.io.*;import java.util.*;import java.net.*;import java.sql.*; import org.w3c.dom.*;import javax.xml.parsers.*;public class DBRestore extends Object{    Connection connection;    Statement statement;    String xmlFile;    boolean deleteExisting;    boolean verbose;        public DBRestore(String url, String driverName,                       String user, String passwd,                       String file, boolean delete,boolean verb)    {        try        {            //load the driver            Class.forName(driverName);            connection =                     DriverManager.getConnection(url, user, passwd);                                statement = connection.createStatement();                        xmlFile = file;            deleteExisting = delete;            verbose = verb;            if(verbose) System.out.println("Connected to "+url);        }        catch (Exception exp)        {            System.out.println("Error connecting: "+exp);        }         }    public void performRestore()    {        DocumentBuilder docBuilder;        Document doc;        Node dbElement;        Node curTable,curRow,curField;        NodeList tables;        int i,maxTables;        NodeList rows;        int j,maxRows;        NodeList fields;        int k,maxFields;        String tableName;        String rowName;        String fieldName,fieldType;        String data;        StringBuffer sql = new StringBuffer();        boolean gotOne;                try        {              docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();                      doc = docBuilder.parse(xmlFile);                        //set dbElement to the root database element            dbElement = doc.getDocumentElement();                        //get the table elements            tables = dbElement.getChildNodes();            maxTables = tables.getLength();                        for(i=0;i<maxTables;i++)            {                curTable = tables.item(i);                                //skip any text elements surrounding tables                if(!"TABLE".equals(curTable.getNodeName())) continue;                                tableName =                    curTable.getAttributes().getNamedItem("NAME").getNodeValue();                if(verbose) System.out.println("Restoring: "+tableName);                                if(deleteExisting)                {                    if(verbose) System.out.println("\tDeleting: "+tableName);                    statement.executeUpdate("delete from "+tableName);                }                                rows = curTable.getChildNodes();                maxRows = rows.getLength();                                for(j=0;j<maxRows;j++)                {                      curRow = rows.item(j);                    if(!"ROW".equals(curRow.getNodeName())) continue;                                    sql.setLength(0);                    sql.append("insert into ");                    sql.append(tableName);                    sql.append(" (");                                        fields = curRow.getChildNodes();                    maxFields = fields.getLength();                                        gotOne = false;                                        //Build the column names for the insert statement                    for(k=0;k<maxFields;k++)                    {                        curField = fields.item(k);                                            fieldType =                             curField.getNodeName();                                                    if(!"NUMERIC".equals(fieldType)                                &&!"TEXT".equals(fieldType)) continue;                                                        if(curField.getFirstChild()==null) continue;                                                if(gotOne) sql.append(",");                                            gotOne = true;                                                fieldName =                             curField.getAttributes().getNamedItem("NAME").getNodeValue();                                                sql.append(fieldName);                    }                                        sql.append(") values (");                                        gotOne = false;                                        //Build the column values for the insert statement                    for(k=0;k<maxFields;k++)                    {                        curField = fields.item(k);                                            fieldType =                             curField.getNodeName();                                                if(!"NUMERIC".equals(fieldType)                                &&!"TEXT".equals(fieldType)) continue;                                                //Skip blank tags                        if(curField.getFirstChild()==null) continue;                                                if(gotOne) sql.append(",");                                            gotOne = true;                        data = null;                                                if("TEXT".equals(fieldType))                        {                            data = curField.getFirstChild().getNodeValue();                                                            if(data == null) data = "";                            else                            {                                data = URLDecoder.decode(data);                                                            data = StringUtils.escape(data);                            }                                                        sql.append("\'");                            sql.append(data);                            sql.append("\'");                        }                        else if("NUMERIC".equals(fieldType))                        {                            sql.append(curField.getFirstChild().getNodeValue());                        }                    }                                        sql.append(")");                                        if(verbose) System.out.println("\t"+sql.toString());                    statement.executeUpdate(sql.toString());                }            }        }        catch (Exception exp)        {            System.out.println("Error performing backup: "+exp);            exp.printStackTrace();        }        }    public void close()    {        try        {            statement.close();            connection.close();            if(verbose) System.out.println("Disconnected.");        }        catch (Exception exp)        {            System.out.println("Error closing DB connection: "+exp);            exp.printStackTrace();        }        }        public static void main(String args[])    {        String url=null,driver=null,user=null;        String password=null,file=null;        boolean doDelete=false;        boolean doVerbose=false;        DBRestore restore;        int i,max;                if ((args != null) && (args.length > 1))         {            max = args.length;                        for (i = 0;i < max;i++)            {                if (args[i].equals("-url"))                     url = args[++i];                else if (args[i].equals("-driver"))                     driver = args[++i];                else if (args[i].equals("-user"))                     user = args[++i];                else if (args[i].equals("-password"))                     password = args[++i];                else if (args[i].equals("-file"))                     file = args[++i];                else if (args[i].equals("-D"))                     doDelete = true;                else if (args[i].equals("-verbose"))                     doVerbose = true;            }        }                if((url == null)||(driver == null)||(file == null))        {            System.out.println("usage: DBRestore"                                +" -url url"                                +" -driver driverClassName"                                +" [-user user]"                                +" [-password pass]"                                +" -file XMLFileName"                                +" [-D]"                                +" [-verbose]");                                            System.exit(0);        }                restore = new DBRestore(url,driver,user,password,file,doDelete,doVerbose);        restore.performRestore();        restore.close();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -