您的位置:首页 > 编程语言 > Java开发

java链接Mysql异常:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:

2013-03-12 15:57 519 查看
1963ok
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The driver was unable to create a connection due to an inability to establish the client portion of a socket.

This is usually caused by a limit on the number of sockets imposed by the operating system. This limit is usually configurable.

For Unix-based platforms, see the manual page for the 'ulimit' command. Kernel or system reconfiguration may also be required.

For Windows-based platforms, see Microsoft Knowledge Base Article 196271 (Q196271).

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

...........

出现该问题的主要原因:每次插入一条数据就建立一个connection,导致链接异常!

解决办法:将connection处理为静态,最后再关闭

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
* 数据库工具类
* @author Administrator
*
*/
public class DB {
static Connection conn=null;

/**
* 通过读取配置文件取得数据库连接
* @return
*/
public static Connection getConnection() {
if(conn==null){

JdbcInfo jdbcInfo=ConfigReader.getInstance().getJdbcInfo();

try {
Class.forName(jdbcInfo.getDrivername());
conn=DriverManager.getConnection(jdbcInfo.getUrl(),jdbcInfo.getUsername(), jdbcInfo.getPassword());

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return conn;

}

public static void close(PreparedStatement pstmt) {
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

public static void close(Statement stmt) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

public static void close(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

public static void close(ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

public static void commit(Connection conn) {
if (conn != null) {
try {
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

public static void rollback(Connection conn) {
if (conn != null) {
try {
conn.rollback();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

public static void setAutoCommit(Connection conn, boolean autoCommit) {
if (conn != null) {
try {
conn.setAutoCommit(autoCommit);
} catch (SQLException e) {
e.printStackTrace();
}
}
}

public static void main(String[] args) {
DB.getConnection();
System.out.println("链接成功!");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: