我在这里遇到了一些问题。 基本上我想使用类创建到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()的错误。它说“无法编译的源代码 - 无法找到符号” 非常感谢你。
答案 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。