servlet版sql在线工具

servlet版sql在线工具,以下是执行sql的核心部分。
以前用java写过一个同样的工具。现在想起当时对编程还是缺乏经验,对于出错处理,文本识别方面考虑不周,写的也不够规范。附上java版sql 工具。以供自己警记。

public void executeSql(String sql, HttpServletResponse response)
   throws ServletException, IOException {

   PrintWriter out = response.getWriter();
   try {
     //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     Connection con = DriverManager.getConnection("jdbc:odbc:JavaWeb");
     System.out.println("got connection");

     Statement s = con.createStatement();

     if (sql.toUpperCase().startsWith("SELECT")) {
       out.println("<TABLE BORDER=1>");
       ResultSet rs = s.executeQuery(sql);
       ResultSetMetaData rsmd = rs.getMetaData();
       // Write table headings
       int columnCount = rsmd.getColumnCount();
       out.println("<TR>");
       for (int i=1; i<=columnCount; i++) {
         out.println("<TD><B>" + rsmd.getColumnName(i) + "</B></TD>\n");
       }
       out.println("</TR>");
       while (rs.next()) {
         out.println("<TR>");
         for (int i=1; i<=columnCount; i++) {
           out.println("<TD>"+ StringUtil.encodeHtmlTag(rs.getString(i)) + "</TD>" );
         }
         out.println("</TR>");
       }
       rs.close();
       out.println("</TABLE>");
     }
     else {
       int i = s.executeUpdate(sql);
       out.println("Record(s) affected: " + i);
     }
     s.close();
     con.close();
     out.println("</TABLE>");
   }
   catch (SQLException e) {
     out.println("<B>Error</B>");
     out.println("<BR>");
     out.println(e.toString());
   }
   catch (Exception e) {
     out.println("<B>Error</B>");
     out.println("<BR>");
     out.println(e.toString());
   }
 }
}

java sql在线调试工具
package com.dean;

import javax.swing.JFrame;
import com.borland.jbcl.layout.XYLayout;
import com.borland.jbcl.layout.*;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.awt.event.KeyEvent;
import java.awt.event.KeyAdapter;

/**
* <p>Title: huaman resources manage system</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright xiaohui(c) 2006</p>
*
* <p>Company: </p>
*
* @author Kevin Dean
* @version 1.0
*/
public class SqlDebug extends JFrame {
   public SqlDebug() {
       try {
           jbInit();
       } catch (Exception ex) {
           ex.printStackTrace();
       }
   }

   public static void main(String[] args) {
       SqlDebug sqldebug = new SqlDebug();
   }

   private void jbInit() throws Exception {
       this.getContentPane().setLayout(xYLayout1);
       jButton1.setToolTipText("F5 to execute");
       jButton1.setText("execute");
       jButton1.addActionListener(new SqlDebug_jButton1_actionAdapter(this));
       this.setSize(545,420);
       //this.setVisible(true);
       xYLayout1.setWidth(547);
       xYLayout1.setHeight(394);
       com.dean.ComFun.centerWin(this);
       this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
       this.setTitle("SQL调试窗口");
       jButton2.setText("clear");
       jButton2.addActionListener(new SqlDebug_jButton2_actionAdapter(this));
       jTextArea1.addKeyListener(new SqlDebug_jTextArea1_keyAdapter(this));
       jTextArea1.setToolTipText("输入SQL语句,按F5执行");
       jScrollPane1.getViewport().add(jTextArea2);
       this.getContentPane().add(jButton2, new XYConstraints(387, 65, 84, 32));
       this.getContentPane().add(jScrollPane1,
                                 new XYConstraints(11, 110, 521, 270));
       this.getContentPane().add(jButton1, new XYConstraints(387, 11, 84, 43));
       jScrollPane2.getViewport().add(jTextArea1);
       this.getContentPane().add(jScrollPane2, new XYConstraints(8, 2, 373, 99));
       this.setVisible(true);

   }

   XYLayout xYLayout1 = new XYLayout();
   JTextArea jTextArea1 = new JTextArea();
   JButton jButton1 = new JButton();
   JScrollPane jScrollPane1 = new JScrollPane();
   JTextArea jTextArea2 = new JTextArea();
   String query;
   ResultSet rs;
   JButton jButton2 = new JButton();
   JScrollPane jScrollPane2 = new JScrollPane();
   public void jButton1_actionPerformed(ActionEvent e) {
       try{
           myDb mydb=new myDb("odbc");
           Statement stmt=mydb.createStmt();
           query=this.jTextArea1.getText();
           if(stmt.execute(query)){
               rs=stmt.getResultSet();
               //System.out.println(rs.getRow());
               mydb.display_rs(rs,jTextArea2);
              // this.jTextArea2.append(String.valueOf(rs));
           }else{
               int n=stmt.getUpdateCount();
               jTextArea2.append("query affected rows "+String.valueOf(n));
               jTextArea2.append("\n");
           };

       }
       catch(SQLException e3){
           this.jTextArea2.append(e3.getMessage());
       }

   }

   public void jTextArea1_keyPressed(KeyEvent e) {
      if(e.getKeyCode()==KeyEvent.VK_F5){
          jButton1_actionPerformed(null);
      }

   }

   public void jButton2_actionPerformed(ActionEvent e) {
       this.jTextArea2.setText(null);

   }

}

class SqlDebug_jTextArea1_keyAdapter extends KeyAdapter {
   private SqlDebug adaptee;
   SqlDebug_jTextArea1_keyAdapter(SqlDebug adaptee) {
       this.adaptee = adaptee;
   }

   public void keyPressed(KeyEvent e) {
       adaptee.jTextArea1_keyPressed(e);
   }
}

class SqlDebug_jButton2_actionAdapter implements ActionListener {
   private SqlDebug adaptee;
   SqlDebug_jButton2_actionAdapter(SqlDebug adaptee) {
       this.adaptee = adaptee;
   }

   public void actionPerformed(ActionEvent e) {
       adaptee.jButton2_actionPerformed(e);
   }
}

class SqlDebug_jButton1_actionAdapter implements ActionListener {
   private SqlDebug adaptee;
   SqlDebug_jButton1_actionAdapter(SqlDebug adaptee) {
       this.adaptee = adaptee;
   }

   public void actionPerformed(ActionEvent e) {
       adaptee.jButton1_actionPerformed(e);
   }
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据