file 1  :  先把主程序的父类搬来! /*  * date:   2004-11-20  * author:zhangyu6050;  * todo:  * bugs:   */ package sd;   import javax.swing.*; import java.awt.*; import java.awt.event.*; 
public abstract class MyQQPan extends JFrame  implements ActionListener {  JTextArea textreceive=new JTextArea();  JTextArea textsend =new JTextArea("select * from Employees");   JButton button =new JButton ("Send");   public MyQQPan()   {   //init controls   setTitle("查询框架");   setBounds(50,50,500,400);   getContentPane().setLayout(null); 
  getContentPane().add(textreceive);   getContentPane().add(textsend);   getContentPane().add(button);      button.addActionListener(this);      textreceive.setBounds(0,0,450,300);   textsend.setBounds(10,320,350,60);   button.setBounds(370,320,70,30);  }         public abstract void actionPerformed(ActionEvent event);       } file 2  :  下面是主程序! /*  * date:   2004-11-19  * author:zhangyu6050;  * todo:  * bugs:   */ package sd; //TextAreaDemo.java  import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; 
import javax.swing.*; import sd.Mysql;   public class Myframe extends MyQQPan{     private String sql;     private String rsult;      // private int row;//要所取的列      public void actionPerformed(ActionEvent e){         if(e.getSource() instanceof JButton){             sql=textsend.getText();                        // row= Character.getNumericValue(sql.charAt(sql.length()-1));//得到要取的列数!            // initRsult();             Methods.ting(sql);//这个类集成了一些常用的方法!             rsult=Methods.rStr;             textreceive.setText(rsult);         }      }            public static void main(String[] args) {         Myframe mf=new Myframe();            mf.setVisible(true);       } 
} 
    file 3  :  
数据库连接类,并以Facade模式集成了相关方法! 
  /*  * date:   2004-11-17  * author:zhangyu6050;  * todo: 一个数据库封装类,作用是:  *                      获取数据库连接  *                      通过接受的SQL语句选择数据库并且返回结果  *       期间要作出以下判断:1 如果sql用来查询:、、、、  *           2 如果sql用来update:、、、、  *   * bugs:   * 改进:实现接口:sqlQuery;  *      主要继承一些比如ERROR,SUCCESS等的常量!  */ package sd;   import java.util.List; import java.sql.*;   public class Mysql {      private String dirverName="com.microsoft.jdbc.sqlserver.SQLServerDriver";     private String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Northwind";     private String password="sa";     private String userName="sa";     private Connection conn = null;     private Statement stmt = null;     private PreparedStatement prepstmt = null;     public void getDataSource(){         try {             Class.forName(dirverName);             conn=DriverManager.getConnection(URL,userName,password); 
        } catch (Exception e) {             //连接发生错误!             System.out.print("连接发生错误!");             e.printStackTrace();         }     }     public Mysql(){                       try {              getDataSource();             stmt=conn.createStatement();         } catch (SQLException e) {                System.out.print("conn.createStatement()发生错误!");             e.printStackTrace();         }     }       
    public Mysql(String aqurey){         try {             stmt=conn.createStatement();             prepareStatement(aqurey);         } catch (SQLException e) {              System.out.print("conn.createStatement()发生错误!");             e.printStackTrace();         }                   }     public ResultSet find(String aquery) throws SQLException{         if(stmt==null) return null;         String query=aquery;         //最好经过一些防止sql注入的检测!         return stmt.executeQuery(query);     }     public ResultSet find() throws SQLException{         if(prepstmt==null) return null;         return prepstmt.executeQuery();     }     public String find(String aquery,int row) throws SQLException{         ResultSet r=this.find(aquery);         String rs = "";         while(r.next())         rs+=(String)r.getObject(row)+"\n";         return rs;              }     public void prepareStatement(String sql) throws SQLException {         prepstmt = conn.prepareStatement(sql);       }     public void close() throws SQLException{         if(prepstmt!=null) prepstmt.close();         if(stmt!=null) prepstmt.close();     }      
} file 4  :  处理数据库结果的方法集 /*  * date:   2004-11-18  * author:zhangyu6050;  * todo:  处理数据库结果的方法集!  * bugs:   */ package sd; 
import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException;     public class Methods {     static Mysql q1=new Mysql();     static ResultSet  r;     static String  rStr="";     public static void ting(String sql) {//根据sql按表的格式取出结果串                  try {             //可以利用正则表达式来进行判断!            if(sql==null||sql.equals("")) r = q1.find("select EmployeeID,LastName from employees");            else r=q1.find("select EmployeeID,LastName from employees");             ResultSetMetaData rsmd=r.getMetaData();             int columnCount=rsmd.getColumnCount();             for (int i = 1; i <= columnCount; i++) {                 rStr+=rsmd.getColumnName(i)+"\t";                                        }             rStr+="\n\n";             while(r.next()){               for (int i = 1; i <columnCount+1; i++) {                    rStr+=(r.getObject(i)+"\t\t");                 }               rStr+="\n";            }          } catch (SQLException e) {                        e.printStackTrace();         } 
     }    /* public static void main(String[] args) {         String s="123";         int i= Character.getNumericValue(s.charAt(2));         ting(null);                  System.out.println(rStr);     }    */ } 
粗粗写来,没有完整。 请指教:)
   
 
  |