Java连接到DB

时间:2011-05-18 09:05:47

标签: java mysql jdbc connection-pooling

我在这里遇到了一些问题。 基本上我想使用类创建到DB的连接池。其他类可以使用此池来执行查询。我已经创建了连接类的其他类子类。 这是我到目前为止所做的。

Connection类/(连接池类)

import java.sql.*;  public class connect extends cPool {
   public static void main(String[] args) {
       cPool en = new cPool(); //crate an object in the name of cPoll calss
       Connection conn = null;
       Object data;
       data = (connect) conn;
       en.readinfo(); //call object then method name
       String userName = "root";
           String password = "" + en.paword + "";// hold outside try catch block to get and set
           String url = "" + en.url + "";

       try
       {

           Class.forName ("com.mysql.jdbc.Driver").newInstance ();
           conn = DriverManager.getConnection (url, userName, password);
           System.out.println ("Database connection established");



       }
       catch (Exception e)
       {
           System.err.println ("Cannot connect to database server");
           System.err.println("Tried connecting using" + url + userName + password +"");

       }
       finally
       {

       }
   }    

}

这是Execute语句类

import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class getProduct extends connect {
    public static void main(String[] args) {
        connect cn = new connect();
        Connection conn = cn.data;

        try {
           Statement stmt = conn.createStatement();
           ResultSet rs = stmt.executeQuery("SELECT * FROM My_Table");
        }
        catch (SQLException ex) {
            Logger.getLogger(getProduct.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally
        {

        }
    }
}

我无法执行任何陈述。从第二课开始,当我这样做时,我遇到了createStatement()的错误。它说“无法编译的源代码 - 无法找到符号” 非常感谢你。

3 个答案:

答案 0 :(得分:1)

连接池是一个高级主题,根据您的代码判断我会说暂时让它休息并首先学习一些Java基础知识。所以也许您应该使用现有的解决方案:

答案 1 :(得分:1)

你有问题。

我不推荐所有这些继承; extends不是个好主意。

getProduct应该是一种方法,而不是一个类。

你的getProduct课程没有用。你没有得到它的结果。您不清理资源。在编写一个合适的JDBC类之前,不要担心池。

像这样的东西(留下一些东西让你弄清楚):

package persistence;

public class ProductDaoImpl implements ProductDao
{
    private static final String BASE_SELECT = "select * from product ";

    private Connection connection;

    public ProductDaoImpl(Connection connection) { this.connection = connection; }

    public List<Product> find() throws SQLException
    {
        List<Product> products = new ArrayList<Product>();

        Statement st = null;
        ResultSet rs = null;

        try
        {
            st = this.connection.createStatement();
            rs = st.executeQuery(BASE_SELECT);
            while (rs.next())
            {
               Product product = new Product();
               // map columns into product
               products.add(product);
            }
        }
        finally
        {
            DatabaseUtils.close(rs);
            DatabaseUtils.close(st);
        }

        return products;
    }
}

答案 2 :(得分:0)

不确定问题是什么,但我认为一个合理的答案是“不要写自己的”。有许多不错的选择,其中两个刚刚被Sean(+1)提到。我会添加自己的最爱:BoneCP