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); } */ }
粗粗写来,没有完整。 请指教:)

|