📄 xmldbframe.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 + -