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

📄 database.java

📁 基于xml的数据库管理系统
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.xml.parsers.*;
import java.io.*;
import org.xml.sax.*;
import org.w3c.dom.*;
import org.apache.crimson.tree.XmlDocument;

import javax.xml.transform.*; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 
import javax.swing.tree.*;
import javax.swing.tree.DefaultMutableTreeNode;


public class database extends Frame implements ActionListener
{	
    TextArea Check;
    //Createtable createtable; 
    TextField Edit;
    Button done,undo;
    public String databasename=null;
    
    public Document document=null;
    public Element root;
    public DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
    public DocumentBuilder db;
    
    int mode=-1;
    database(TextArea t)                            //主类的构造函数,完成构件的初始化,和图形界面的安排工作
    {
    	setTitle("database name");
    	setLocation(200,200);
        setSize(200,140);
        
        Edit=new TextField();
        Edit.setBounds(36,50,130,30);
        add(Edit);
        done=new Button("是");
        done.setBounds(36,80,60,30);
        done.addActionListener(this);
        add(done);
        
        undo=new Button("否");
        undo.setBounds(106,80,60,30);
        undo.addActionListener(this);
        add(undo);
        Check=t;
        setLayout(null);
        //setVisible(true); 
     }
     public void setmode(int mode)
     {
     	this.mode=mode;
     }
     public void actionPerformed(ActionEvent e)               
     { 
         if(e.getSource()==done)                                    
         { 
            if(mode==0)
            {
            	
            	databasename=Edit.getText().trim();
                setVisible(false); 
            
    	    	try
    	    	{ 
    		       dbf.setIgnoringComments(true);
                   dbf.setIgnoringElementContentWhitespace(true);
    	    	   db=dbf.newDocumentBuilder();
    	    	   document=db.newDocument();
    	    	   root=(Element) document.createElement("tablelist");  //建立根元素
    		       document.appendChild(root);
    		       writeXMLFile(databasename);
    	    	}catch(Exception ee){System.out.println(ee);}
            }
    		if(mode==1)
    		{
    			
    			databasename=Edit.getText().trim();
                setVisible(false);
                try
                {
                	db=dbf.newDocumentBuilder();
                	readXMLFile(databasename);
                }catch(Exception ee){System.out.println(ee);}
                if(document==null)
                {
                	Check.append("*************************************\n");
                	Check.append("文件没有加载成功\n");
                }
                else
                {
                	Check.append("*************************************\n");
                	Check.append("文件加载成功\n");
                	
                }
    		}
    		
         }
         if(e.getSource()==undo)                                    //文件的读按钮
         { 
            setVisible(false); 
         }
    }
    
    public void readXMLFile(String inFile) throws Exception
    {
        
       try
       {
          document=db.parse(inFile);
          Show sh=new Show();
    	    sh.show(document.getDocumentElement());
       } catch (DOMException dom) {} catch (IOException ioe) {}

    }
    
    public void writeXMLFile(String outFile) throws Exception
    {
       //为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
       //把XML文档输出到指定的文件
       /*FileOutputStream outStream = new FileOutputStream(outFile);
       OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
       ((XmlDocument) document).write(outWriter,"GB2312");
       outWriter.close();
       outStream.close(); */
       
       TransformerFactory tf;
       Transformer transformer;
       DOMSource source;
       PrintWriter pw;
       StreamResult result;
       try{ 
                tf=TransformerFactory.newInstance(); 
	        	transformer=tf.newTransformer(); 
	         	source=new DOMSource(document); 
	          	transformer.setOutputProperty(OutputKeys.ENCODING,"GB2312"); 
	         	transformer.setOutputProperty(OutputKeys.INDENT,"yes"); 
	        	pw=new PrintWriter(new FileOutputStream(outFile)); 
	         	result=new StreamResult(pw); 
	         	transformer.transform(source,result); 
	  /*********************************************************************/
	  /*文件处理关键代码*/
	         	FileInputStream fIn=new FileInputStream(outFile);
			BufferedInputStream bIn=new BufferedInputStream(fIn);
			int size=bIn.available();
			byte[] b=new byte[size];
			bIn.read(b,0,size);
			String str=new String(b);
			
			char[] c=new char[size];
			str.getChars(0,size,c,0);
			
			for(int i=0;i<size;i++)
			{
				
				if(c[i]==10 || c[i]==13)
				{
					//System.out.println(i);
					int j=i;
					for(;j<size-1;j++)
					{
						c[j]=c[j+1];
					}
					i--;
					size--;
				}
			}
			str=new String(c,0,size);
			FileOutputStream wf=new FileOutputStream(outFile);
			wf.write(str.getBytes());
			/***************************************************/
            } 
            catch(TransformerException mye){ 
		mye.printStackTrace(); 
            } 
            catch(IOException exp){ 
		exp.printStackTrace(); 
            } 
    }
    
    
    public static void main(String args[])
    {
    	//new database();
    }
}

⌨️ 快捷键说明

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