/*
这个类主要是连接数据库,暂是不用连接池
*/
package com.chainjee;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
public class MyDatabase {
private Connection conn=null;
private PreparedStatement comm=null;public MyDatabase(){
connectDB();
}public void connectDB(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:odbc:test","sa","sa");
}catch(Exception ex){
System.out.println(ex.toString());
}
}public void setPrepareSQL(String strSQL) throws Exception{
comm=conn.prepareStatement(strSQL);
}public void setString(int cols,String defaultValue) throws Exception{
comm.setString(cols,defaultValue);
}public void setInt(int cols,int defaultValue)  throws Exception{
comm.setInt(cols,defaultValue);
}public Connection getConnection(){
return this.conn;
}public int executeUpdate(){
int recordAffected=0;
try{
recordAffected=comm.executeUpdate();
}catch(Exception ex){
}
return recordAffected;
}/*以arrayList的形式返回数据库记录列表*/
public ArrayList executeQuery() {
ArrayList arrayList=new ArrayList();
ResultSet res1=null;
try{
res1=comm.executeQuery();
ResultSetMetaData rsm=res1.getMetaData();
while(res1.next()){
Hashtable hb=new Hashtable();
for(int i=1;i<=rsm.getColumnCount();i++){
String name=rsm.getColumnName(i);
Object value=res1.getObject(i);
hb.put(name,""+value);
}
arrayList.add(hb);
}
}catch(Exception ex){
return null;
}finally{
try{
res1.close();
}catch(Exception e){}
}
return arrayList;
}/*System Test*/
public static void main(String[] args) throws Exception{
}
}

解决方案 »

  1.   

    /*
     * *****************************************************************
     * 通用信息发布类
     * Author:Huang
     * Date:2006/10/24
     * addArticle:添加相关信息
     ******************************************************************
     */
    package com.chainjee;import java.util.ArrayList;
    import java.util.Hashtable;
    import java.util.Iterator;public class MyArticle {
    private String title="";
    private String content="";
    private int hits=0;
    private MyDatabase myDatabase=null;
    private String author="";public MyArticle(){
    myDatabase=new MyDatabase();
    }
    public String getAuthor() {
    return author;
    }
    public String getContent() {
    return content;
    }
    public int getHits() {
    return hits;
    }
    public String getTitle() {
    return title;
    }
    public void setAuthor(String author) {
    this.author = author;
    }
    public void setContent(String content) {
    this.content = content;
    }
    public void setHits(int hits) {
    this.hits = hits;
    }
    public void setTitle(String title) {
    this.title = title;
    }
    public int addArticle(){
    String strSQL="insert into article(title,content,author,hits) values(?,?,?,?)";
    try{
    myDatabase.setPrepareSQL(strSQL);
    myDatabase.setString(1,this.title);
    myDatabase.setString(2,this.content);
    myDatabase.setString(3,this.author);
    myDatabase.setInt(4, this.hits);
    return myDatabase.executeUpdate();
    }catch(Exception ex){
    System.out.println("Error"+ex.toString());
    return 0;
    }
    }public  Iterator getArticleList(int ClassId) throws Exception{
    String strSQL="SELECT * FROM Article WHERE 1=1 ";
    myDatabase.setPrepareSQL(strSQL);
    ArrayList arrayList=myDatabase.executeQuery();
    ArrayList articles=new ArrayList();
    for(int i=0;i<arrayList.size();i++){
    Hashtable hb=(Hashtable)(arrayList.get(i));
    MyArticle myArticle=new MyArticle();
    myArticle.setTitle((String)hb.get("title"));
    articles.add(myArticle);
    }
    return articles.iterator();
    }
    public static void main(String[] args) {try {
    Iterator a=new MyArticle().getArticleList(25);
    while(a.hasNext()){
    MyArticle m=(MyArticle)a.next();
    System.out.println("huangls"+m.getTitle());
    }
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }这个是新闻发布类,
    功能虽然达到了,但是看得是分难受,请高手指点一下,本人感激不尽
      

  2.   

    /*
     * 创建日期 2006-10-12
     *
     * TODO 要更改此生成的文件的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    package com.manage;import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;/**
     * @author liulei
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public class DBConnection {
    private Connection conn = null;
    private ResultSet rs=null;
    private Statement stmt=null;
    private String driver="";
    private String url="";
    private String username="";
    private String password="";

    public DBConnection() {

    }

    public void openConnection() {
        Properties prop = new Properties();
        try {
          //使用流类指向配置文件
          InputStream inS = getClass().getResourceAsStream(
              "connection.properties");
          //加载配置文件
          prop.load(inS);
          if (inS != null) {
            inS.close();
          }
        }
        catch (Exception e) {
          System.out.println("打开设置文件发生错误!" + e.getMessage());
        }
        driver = prop.getProperty("driver", "com.sybase.jdbc2.jdbc.SybDriver");
        url = prop.getProperty("url", "jdbc:sybase:Tds:192.168.0.238:5000/ttms_dev");
        username = prop.getProperty("username", "sa");
        password = prop.getProperty("password", "");     try {
    Class.forName(driver);

        catch (ClassNotFoundException e1) {
         e1.printStackTrace();
    }
        try {
          System.out.println("加载数据驱动成功!");
          if(conn==null)
           conn = DriverManager.getConnection(url, username, password);
        }
        catch (SQLException e) {
          System.out.println("打开数据库发生错误" + e.getMessage());
          System.err.println(e.getMessage());
        }
    }

    public ResultSet executeQuery(String sql) {
    rs = null; try {
    stmt = conn.createStatement();
    rs = stmt.executeQuery(sql);

    catch(SQLException se) {
    System.out.println("Query error:" + se.getMessage());
    }
    return rs;
    }

    public boolean executeUpdate(String sql) {
    try {
    stmt = conn.createStatement();
    stmt.executeUpdate(sql);
    return true;

    catch (SQLException e) {
    System.out.println("update error:"+e.getMessage());
    return false;
    }
    }


    public void closeConnection() {
    try {
    if (rs != null) {
    rs.close();
    rs = null;
    }
    if (stmt != null) {
    stmt.close();
    stmt = null;
    }
    if (conn != null) {
    conn.close();
    conn = null;
    }

    catch (SQLException e) {
    System.out.println("close error: " + e.getMessage());
    }
    }}
      

  3.   

    属性文件driver=com.sybase.jdbc2.jdbc.SybDriver
    url=jdbc:sybase:Tds:192.168.0.238:5000/ttms_dev
    username=sa
    password=
      

  4.   

    像得到数据集的方法最好写到Bean中来调用,采用三层架构最好的.
      

  5.   

    呵呵,这么说吧。。如果你仅仅使用一个连接可以使用singleton模式,一般数据库会使用template模式,把sql赋值写在子类,父类是固定的连接执行操作,可以考虑把connection与exec分开。。用bridge模式来连接。这些只是思路。