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);
}
*/
}
粗粗写来,没有完整。
请指教:)
闽公网安备 35060202000074号