服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

一个简单的访问数据库的应用程序

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

粗粗写来,没有完整。
请指教:)

扫描关注微信公众号