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

📄 xmldbframe.java

📁 xml数据库
💻 JAVA
字号:
/*
 * XmlDbFrame.java
 *
 * Created on 2006年5月25日, 下午4:10
 */

package xmldb;
import xmldb.DBAction;

import java.util.Vector;
import java.util.StringTokenizer;
/**
 *
 * @author  Administrator
 */
public class XmlDbFrame extends javax.swing.JFrame {
    DBAction dBAction = null;
    final static int ERROR=-1;
    final static int SUCCESS=0;
    final static int CREATETABLE=1;
    final static int INSERT=2;
    final static int UPDATE=3;
    final static int DELETE=4;
    final static int SELECT=5;
    
    
    
    /** Creates new form XmlDbFrame */
    public XmlDbFrame() {
        
        dBAction = new DBAction();
        
        initComponents();
    }
    
    /*
     *出错处理
     */
    public void dealWithError(String errInfo){
        System.out.println(errInfo);
        jTextArea1.setText(jTextArea1.getText()+"\n"+errInfo);
    }
    
    /*
     *处理SQL语句
     */
    public void analyzeSQL(String sql){
        int state=SUCCESS;
        
        int count=0;
        StringTokenizer st = new StringTokenizer(sql," , ; =",true);
        String sqlArray[] = new String[st.countTokens()];
        while(st.hasMoreTokens()){
            String tmpStr=st.nextToken();
            if( !( tmpStr.equals(" ") ||  tmpStr.equals("=")) ) sqlArray[count++]=tmpStr;
            System.out.println("sqlAe="+sqlArray[count-1]);
        }
        for(int i=count;i<sqlArray.length;i++)  sqlArray[i]="#";
        for( int i=0;i<sqlArray.length;i++) System.out.println("sql"+sqlArray[i]);
        
        count=0;
        /*
         *创建表
         */
        if( (sqlArray[0].equals("create") || sqlArray[0].equals("CREATE")) && (sqlArray[1].equals("table") || sqlArray[1].equals("TABLE")) ){
            if( !sqlArray[2].equals("#") ) state=dBAction.createTable( sqlArray[2] );//创建表
            if( state == ERROR ) this.dealWithError("创建表失败");
        }
        
        /*
         *插入新记录
         */
        if( sqlArray[0].equals("insert") || sqlArray[0].equals("INSERT") && (sqlArray[0].equals("into") || sqlArray[0].equals("INTO")) ){
            if( !sqlArray[2].equals("#") ){ //sqlArray[2]为表名
                for(int i=3;i<7;i++){
                    if(sqlArray[3].equals("#")) state=ERROR;
                    else{
                        if(sqlArray[i].equals("#")) sqlArray[i]="";
                    }
                }
                if( !(state==ERROR) ) state=dBAction.insertInto(sqlArray[2], sqlArray[3], sqlArray[4], sqlArray[5], sqlArray[6]);
                if(state==ERROR) {
                    //出错处理
                    this.dealWithError("插入记录失败,可能由于学号重复");
                }
            }
        }
        
        
        /*
         *更新表
         */
        if( sqlArray[0].equals("update") || sqlArray[0].equals("UPDATE") ){
            if( !sqlArray[1].equals("#") ){//表名
                //传入参数后进行检查是否为“#”
                if(sqlArray[2].equals("#")) state=ERROR;
                else{
                    System.out.println(sqlArray[2]+","+sqlArray[3]+","+sqlArray[4]+","+sqlArray[5]);
                    state=dBAction.update(sqlArray[1], sqlArray[2], sqlArray[3], sqlArray[4], sqlArray[5]);
                }
                if( state==ERROR ) this.dealWithError("更新过程中出现错误");
            }
            else this.dealWithError("没有指明表名");
            
        }
        
        /*
         *删除记录
         */
        if( (sqlArray[0].equals("delete") || sqlArray[1].equals("DELETE")) && (sqlArray[1].equals("from") || sqlArray[1].equals("FROM")) ){
            if( !sqlArray[2].equals("#") ){
                if( !sqlArray[3].equals("#") ) state=dBAction.delete(sqlArray[2],sqlArray[3]);
                else this.dealWithError("没有指定学号");
                if(state==ERROR) this.dealWithError("删除过程中出现错误");
            }
            else this.dealWithError("没有指定表名");
        }
        
        /*
         *删除表
         */
        if( (sqlArray[0].equals("delete") || sqlArray[1].equals("DELETE")) && (sqlArray[1].equals("table") || sqlArray[1].equals("TABLE")) ){
            if( !sqlArray[2].equals("#") ){
                state=dBAction.deleteTable(sqlArray[2]);
                if(state==ERROR) this.dealWithError("删除过程中出现错误");
            }
            else this.dealWithError("没有指定表名");
        }
        //else this.dealWithError("DELETE语句语法错误");
        
        /*
         *查询
         *  1。按照学号stuNum
         *  2。按照名字name
         */
        if( (sqlArray[0].equals("select") || sqlArray[0].equals("SELECT")) && (sqlArray[1].equals("from") || sqlArray[1].equals("FROM"))  ){
            Vector result = null;
            if(!sqlArray[2].equals("#")){//表名
                if( sqlArray[3].equals("name") ){//按照名称
                    //System.out.println("isReturn name tou ");
                    if(!sqlArray[4].equals("#")) result=dBAction.selectByName(sqlArray[2],sqlArray[4]);
                    else this.dealWithError("没有输入要选择的值");
                    if( result==null || result.size()<1 ) this.dealWithError("无记录");
                    else{
                        //System.out.println("isReturn name ");
                        //处理记录
                        for( int i = 0; i<result.size(); i++ ){
                            Student student = (Student) result.elementAt(i);
                            jTextArea1.setText(jTextArea1.getText()+"student num="+student.getStuNum()+",name="+student.getStuName()+",sex="+student.getSex()+",age="+student.getAge()+"\n" );
                            //System.out.println("student num="+student.getStuNum()+",name="+student.getStuName()+",sex="+student.getSex()+",age="+student.getAge());
                        }
                    }
                }
                if( sqlArray[3].equals("stuNum") ){//按照学号
                    //System.out.println("isReturn num tou ");
                    if(!sqlArray[4].equals("#")) result=dBAction.selectByStuNum(sqlArray[2],sqlArray[4]);
                    else this.dealWithError("没有输入要选择的值");
                    if( result==null || result.size()<1 ) this.dealWithError("无记录");
                    else{
                        //System.out.println("isReturn num ");
                        //处理记录
                        for( int i = 0; i<result.size(); i++ ){
                            Student student = (Student) result.elementAt(i);
                            jTextArea1.setText(jTextArea1.getText()+"student num="+student.getStuNum()+",name="+student.getStuName()+",sex="+student.getSex()+",age="+student.getAge()+"\n" );
                            //System.out.println("student num="+student.getStuNum()+",name="+student.getStuName()+",sex="+student.getSex()+",age="+student.getAge());
                        }                        
                    }
                }
                if( !sqlArray[3].equals("stuNum") && !sqlArray[3].equals("name") ) this.dealWithError("没有选择SELECT方式");
            }
            else this.dealWithError("没有指定表名");
        }
        //else this.dealWithError("SELET语句语法错误");
              
    }    
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jSeparator1 = new javax.swing.JSeparator();
        jLabel_sqlInput = new javax.swing.JLabel();
        jTextField_sqlInput = new javax.swing.JTextField();
        jButton_confirm = new javax.swing.JButton();
        jButton_clean = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("XML\u6570\u636e\u5e93");
        setResizable(false);

        jLabel_sqlInput.setText("SQL\u547d\u4ee4\u8f93\u5165");

        jTextField_sqlInput.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jTextField_sqlInputKeyPressed(evt);
            }
        });

        jButton_confirm.setText("\u786e\u8ba4");
        jButton_confirm.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton_confirmActionPerformed(evt);
            }
        });

        jButton_clean.setText("\u6e05\u9664");
        jButton_clean.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton_cleanActionPerformed(evt);
            }
        });

        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jScrollPane1.setViewportView(jTextArea1);

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 520, Short.MAX_VALUE)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup()
                        .add(jLabel_sqlInput, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 77, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jTextField_sqlInput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jButton_confirm)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jButton_clean)
                        .add(9, 9, 9))
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jSeparator1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 520, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 307, Short.MAX_VALUE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jSeparator1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel_sqlInput, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 24, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jButton_confirm)
                    .add(jTextField_sqlInput, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 24, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jButton_clean))
                .addContainerGap())
        );
        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButton_cleanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_cleanActionPerformed
// TODO add your handling code here:
        jTextArea1.setText("");
        this.jTextField_sqlInput.setText("");
    }//GEN-LAST:event_jButton_cleanActionPerformed

    private void jButton_confirmActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_confirmActionPerformed
// TODO add your handling code here:
        jTextArea1.setText("");
        this.analyzeSQL(this.jTextField_sqlInput.getText());
    }//GEN-LAST:event_jButton_confirmActionPerformed

    private void jTextField_sqlInputKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField_sqlInputKeyPressed
// TODO add your handling code here:
        int keyCode = evt.getKeyCode();
        if( keyCode == 10 ){
            //this.jButton_confirm.requestFocus();
            jTextArea1.setText("");
            this.analyzeSQL(this.jTextField_sqlInput.getText());
        }
    }//GEN-LAST:event_jTextField_sqlInputKeyPressed
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new XmlDbFrame().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton_clean;
    private javax.swing.JButton jButton_confirm;
    private javax.swing.JLabel jLabel_sqlInput;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField_sqlInput;
    // End of variables declaration//GEN-END:variables
    
}

⌨️ 快捷键说明

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