相关疑难解决方法(0)

String,StringBuffer和StringBuilder

请告诉我一个实时的情况来比较String,StringBufferStringBuilder

java oop string stringbuilder

206
推荐指数
6
解决办法
16万
查看次数

2011/2012中的Java JDBC连接池库选择?

我应该将哪个JDBC连接池库用于新的应用程序项目(而不是Web应用程序)?

我应该选择BoneCP吗?我没有任何巨大的要求.我只需要一个好的,易于使用的数据库连接池,即正在开发中.图书馆,作者可以回复错误报告,回答一些具体问题等.

顺便说一下,实际上,我只使用MySQL.我发现,MySQL驱动程序支持DriverManager接口,但我不确定它是否实际上是连接池.

connection-pooling jdbc c3p0 bonecp apache-commons-dbcp

71
推荐指数
4
解决办法
2万
查看次数

hashCode()和identityHashCode()如何在后端工作?

如何做Object.hashCode()System.identityHashCode()工作在后端?是否identityHashCode()返回对象的引用?是否hashCode()取决于?对象?==运算符如何在后端工作.

hashCode()和之间有什么区别identityHashCode()

java object hashcode

40
推荐指数
5
解决办法
2万
查看次数

需要代码在java中创建连接池

需要代码在java中创建连接池吗?我们如何确保连接池不返回已在使用的同一对象?如果客户端从连接池中取出连接后关闭连接会怎么样?

更新1:

我想用简单的Java术语创建它,并希望看到它在多线程环境中如何工作.我的意思是哪些方法将同步,哪些方法不同步.这门课还会成为公共课吗?如果是,则任何人都可以访问此类并重新初始化连接池?

更新2:

我有一些代码如下.但我不知道如何"关闭来自池的连接将其返回到池中,它不会在物理上关闭连接." 此外,我没有理解这一点"因为如果连接已从池中借用而尚未返回,则它不是"可用"且无法重新分配给池中的另一个客户端.

import java.util.*;
import java.sql.*;

class ConnectionPoolManager
{

 String databaseUrl = "jdbc:mysql://localhost:3306/myDatabase";
 String userName = "userName";
 String password = "userPass";

 Vector connectionPool = new Vector();

 public ConnectionPoolManager()
 {
  initialize();
 }

 public ConnectionPoolManager(
  //String databaseName,
  String databaseUrl,
  String userName,
  String password
  )
 {
  this.databaseUrl = databaseUrl;
  this.userName = userName;
  this.password = password;
  initialize();
 }

 private void initialize()
 {
  //Here we can initialize all the information that we need
  initializeConnectionPool();
 }

 private void initializeConnectionPool()
 {
  while(!checkIfConnectionPoolIsFull())
  { …
Run Code Online (Sandbox Code Playgroud)

java connection connection-pooling

31
推荐指数
5
解决办法
9万
查看次数

我使用JDBC连接池吗?

我试图确定我是否实际使用JDBC连接池.经过一些研究,实施几乎看起来太容易了.事实上比常规连接更容易,所以我想验证.

这是我的连接类:

public class DatabaseConnection {

Connection conn = null;

public Connection getConnection() {

    BasicDataSource bds = new BasicDataSource();
    bds.setDriverClassName("com.mysql.jdbc.Driver");
    bds.setUrl("jdbc:mysql://localhost:3306/data");
    bds.setUsername("USERNAME");
    bds.setPassword("PASSWORD");

    try{
        System.out.println("Attempting Database Connection");
        conn = bds.getConnection();
        System.out.println("Connected Successfully");
    }catch(SQLException e){
        System.out.println("Caught SQL Exception: " + e);
    }
    return conn;
}

public void closeConnection() throws SQLException {
    conn.close();
}
Run Code Online (Sandbox Code Playgroud)

}

这是真正的连接汇集吗?我在另一个类中使用连接如下:

        //Check data against database.
    DatabaseConnection dbConn = new DatabaseConnection();
    Connection conn;
    ResultSet rs;
    PreparedStatement prepStmt;

    //Query database and check username/pass against table.
    try{
        conn = dbConn.getConnection(); …
Run Code Online (Sandbox Code Playgroud)

mysql connection-pooling jdbc java-ee

29
推荐指数
1
解决办法
3万
查看次数

JDBC事务与连接澄清

我正在使用JDBC与我的Postgres数据库交谈.如果我的整个应用程序都运行一个连接,即只有一个呼叫;

DriverManager.getConnection("jdbc:postgresql://host:5432/database", user, pass);
Run Code Online (Sandbox Code Playgroud)

但是这个Connection对象在Java中的多个线程之间共享,我是否正确地假设任何使用SQL事务(BEGINCOMMIT样式)的尝试只会非常混乱和破坏,因为Java线程可能会交错?请问Connection对象"知道"哪些Java线程使用它来进行查询?

我应该Connection每个Java线程有一个对象并以这种方式使用SQL事务吗?或者我应该在Java中执行所有事务隔离synchronized吗?

java sql postgresql multithreading transactions

12
推荐指数
2
解决办法
5568
查看次数

如何在整个应用程序中使用一个数据库连接对象?

我创建了这个返回连接对象的类.我用过MySQL数据库.

public class Connect_db {        
    public Connection getConnection(String db_name,String user_name,String password)
    {
        Connection con=null;
        try
        {
        Class.forName("com.mysql.jdbc.Driver");
        con=DriverManager.getConnection("jdbc:mysql://localhost/"+db_name+"?user="+user_name+"&password="+password);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

        return con;        
    }
}  
Run Code Online (Sandbox Code Playgroud)

现在我想做的就是实例化这个类一次并得到连接对象.我想在整个应用程序中使用同一个对象.另一个解决方案也将受到赞赏.

java mysql odbc jdbc java-ee

10
推荐指数
1
解决办法
4万
查看次数

如果字符串池的大小超过怎么办?

在Java中

字符串常量池中的字符串文字不是垃圾收集的,因为它们是从运行时实例创建的引用表中引用的,以便优化空间.

如果字符串文字池的大小超过那么,因为字符串文字池中的每个字符串都有引用,因此它不符合GC的条件.它是如何由JVM处理的?

java string

9
推荐指数
2
解决办法
4487
查看次数

如何在java中进行连接池?

我想了解connection pooling in java,我jsp, servlet and tomcat 6 server在我的申请中使用.我在以下代码中编写了以下代码java class dbconnection.java:

我在windows Xp OS中使用类型4 jdbc连接与oracle 10g EE

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

    public class dbconnection {   
     public Connection con = null;    
      public Connection getConnection() throws Exception, SQLException
       {
         try
           {
          Class.forName("oracle.jdbc.driver.OracleDriver");
           con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:abc","abc", "abc");           
           }
           catch(Exception e)
           {          
           }
        return con;
        }
    public void removeConnection() throws SQLException
  {
    con.close();
  }
 }
Run Code Online (Sandbox Code Playgroud)

然后我connection在servlet中重试如下:

try{
 dbconnection db= new dbconnection();

 Connection con=db.getConnection();
 }
 catch(Exception e){ …
Run Code Online (Sandbox Code Playgroud)

java oracle servlets connection-pooling jdbc

4
推荐指数
1
解决办法
3万
查看次数

Java独立应用程序中静态Connection对象的缺点

我仍然是Java的新手,并且正在使用GUI构建器来学习Java的OO和其他编程概念.

我创建了一个非常基本的银行系统,基本上客户可以存钱和取钱.

我的代码没有特别的问题,因为一切正常,我只是有关于数据库连接的问题.

由于始终重复创建连接的代码,因此我创建了一个数据库类,如下所示:

public class DB {
    static Connection c;

    public static void createConnection() throws Exception{
        Class.forName("com.mysql.jdbc.Driver");
        DB.c = DriverManager.getConnection("jdbc:mysql://localhost:3306/bank", "root", "");
    }

    public static int insertUpdateDelete(String sql) throws Exception{
        if(c == null){
            createConnection();
        }
        return c.createStatement().executeUpdate(sql);
    }

    public static ResultSet search(String sql) throws Exception{
        if(c == null)
            createConnection();
        return c.createStatement().executeQuery(sql);
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,每当我想从数据库插入/更新/删除时,我就是这么做的:

DB.insertUpdateDelete(SQL); //SQL contains the query
Run Code Online (Sandbox Code Playgroud)

对于搜索,我会这样做:

ResultSet rs = DB.search(SQL);
Run Code Online (Sandbox Code Playgroud)

经过一些阅读后,我了解到由于"资源泄漏"和查询相互干扰,拥有静态连接对象并不是最佳实践.

我的问题是,在独立的Java应用程序中获取连接的最佳方法是什么,而不必一遍又一遍地重复相同的代码.

谢谢

java mysql jdbc

1
推荐指数
1
解决办法
509
查看次数