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);
}
}