当前位置:首页 » 网络连接 » jdbc连接数据库网络中断的原因
扩展阅读
电视怎么调试网络信号 2025-05-16 02:03:05
找靓机有信号没网络 2025-05-16 02:03:02
手机不想加入wifi网络 2025-05-16 02:03:01

jdbc连接数据库网络中断的原因

发布时间: 2022-05-16 12:21:28

A. JDBC连接数据库问题

当前数据库连接工具类没有问题,你现在需要通过如下步骤进行排查找出原因:
第一,ping数据库所在的地址IP,如果是本机可以ping127.0.0.1。这是为了确认网络无故障,很多人都忽略了防火墙等等的问题导致数据库无法正常访问。
第二,使用MySql可视化工具连接数据库并且试图查询数据,看看是否可以正常访问数据库并且获取数据,该步骤为了确认数据库服务以及数据库是否成功开启。
第三,检查是否引入了驱动包,你引入的驱动类没有问题不代表程序就可以根据你的引入找到所对应的资源,资源来自于MySql驱动jar包。
第四,数据库连接字符串后面的转码等等东西去掉然后连接试试 。

B. 为什么传统的JDBC连接方式在连接过于频繁的情况下会造成数据库的不稳定

数据库有个连接缓冲池,是为了降低每次建立/释放连接时的开销,每次JDBC连接都会产生一个连接在池中,关闭连接后并不会马上释放,如果频繁连接,池里的连接数会达到最大连接数,从而导致数据库连接不稳定~

C. jdbc连接mysql数据库失败的原因

package com.extranauts.shixun2.m.db.tools;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DBUtils {
private static Properties p = new Properties();
private static DBUtils d = new DBUtils();
static{
try {
p.load(d.getClass().getResourceAsStream("init.properties"));
} catch (IOException e) {
System.out.println("配置文件不存在" + e.getMessage());
}
}
public static Connection getConnection() {
Connection con = null;
// 加载配置文件

// 提取配置文件中的项
// 读取配置文件中的数据库连接项
String ip = p.getProperty("ip").trim();
String dbtype = p.getProperty("dbtype").trim();
String dbname = p.getProperty("dbname").trim();
String port = p.getProperty("port").trim();
String username = p.getProperty("username").trim();
String password = p.getProperty("password").trim();
// 判断链接数据库的种类
if (dbtype.equalsIgnoreCase("mysql")) {
// 创建链接
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e) {
System.out.println("mysql驱动未找到" + e.getMessage());
}
StringBuffer s = new StringBuffer();
s.append("jdbc:mysql://");
s.append(ip);
s.append(":");
s.append(port);
s.append("/");
s.append(dbname);
s.append("?user=");
s.append(username);
s.append("&password=");
s.append(password);
s.append("&useUnicode=true&characterEncoding=gb2312");
// myDB为数据库名
try {
con= DriverManager.getConnection(s.toString());
} catch (SQLException e) {
System.out.println("数据库连接项不正确" + e.getMessage());
}
}
if (dbtype.equalsIgnoreCase("sqlserver")) {
// 创建链接
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
} catch (ClassNotFoundException e) {
System.out.println("sqlserver驱动未找到" + e.getMessage());
}
StringBuffer s = new StringBuffer();
s.append("jdbc:microsoft:sqlserver://");
s.append(ip);
s.append(":");
s.append(port);
s.append(";DatabaseName=");
s.append(dbname);

// mydb为数据库
try {
con= DriverManager.getConnection(s.toString(),username,password);
} catch (SQLException e) {
System.out.println("数据库连接项不正确" + e.getMessage());
}
}
// if (dbtype.equals("oracle")) {
//// 创建链接
// try {
// Class.forName("oracle.jdbc.driver.OracleDriver");
// } catch (ClassNotFoundException e) {
// System.out.println("oracle数据库驱动未找到" + e.getMessage());
// }
// String url="jdbc:oracle:thin:@"+ip+":"+port+":"+dbname;
//// orcl为数据库的SID
// try {
// con= DriverManager.getConnection(url,username,password);
// } catch (SQLException e) {
// System.out.println("数据库连接项不正确" + e.getMessage());
// }
// }

return con;
}

public static void close(Connection con,PreparedStatement pstam , ResultSet rs){
if(con != null){
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(pstam != null){
try {
pstam.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

没顾上看你的 这是我以前用过的

D. JDBC连接池的问题。 请问在什么情况下,会出现这种问题啊 找了好久,找不到原因......

你指的是JDBC连接池连接超时失效问题的问题吧?

这是因为mysql默认保持连接的时间是8小时,如果这个连接在8小时内无人访问的话,就会关闭这个连接。但是连接池设计的时候没有考虑到这个问题,还把失效的连接拿出去就会导致出现异常。

解决方法:

1、创建一个线程每隔一段时间就测试一下连接,保持连接时最新的,永远达不到8小时无人访问。

2、连接池取连接的时候判定是否这个连接有效。

[java]view plain

  • if(conn.isValid(1000)){

  • returnconn;

  • }

  • else{

  • returnthis.CreateConnection();

  • }

    3、不使用连接池,直接拿了就用,用了就还。

    E. jdbc c3p0连接mysql 失败 原因汇总,求助

    1,驱动配置有误:driver=com.mysql.jdbc.Driver
    2,数据库连接地址有误:url=jdbc:mysql://localhost:3306/test?3useUnicode=true&characterEncoding=utf8
    3,密码或帐号有误:username=root
    password=root

    4,数据库未启动或无权访问

    5,项目未引入对应的驱动jar包mysql-connector-java-5.1.6-bin.jar

    6,mysql root没有远程访问的权限,需要增加权限,增加权限的步骤如下:
    进入mysql数据库:
    grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
    flush privileges;

    7.jdbc驱动要放到jre里面。

    F. jdbc连接MySQL总是出错,请问是什么原因,有没有解决办法

    可能是以下的其中一种情况:

    一:连接URL格式出现了问题(Connection conn=DriverManager.

    getConnection("jdbc:mysql://localhost:3306/XX","root","XXXX")

    二:驱动字符串出错(com.mysql.jdbc.Driver)

    三:Classpath中没有加入合适的mysql_jdbc驱动(驱动要和你的数据库版本一致)

    四:驱动jar包放的位置不对

    G. JAVA中,连接数据库JDBC总是连接不上

    解决方案:
    1 首先要做的是在sql新建查询里输入
    exec sys.sp_readerrorlog 0, 1, 'listening'
    运行后 会显示你的sql 正在运行的tcp/ip接口
    看看是否和你java代码中指定的url中的接口不一致
    2 你看一下服务器的TCP/IP是否被禁用了,sqlserver2005默认情况下是禁用了TCP/IP连接。启动TCP/IP连接的方法:开始\程序\Microsoft SQL Server 2005\配置工具\目录下的SQL Server Configuration Manager,选择mssqlserver协议, 然后右边窗口有个tcp/ip协议,然后启动它,把sqlserver服务停了再启动。
    3 设置 “开始\程序\Microsoft SQL Server 2005\配置工具\SQL Server 外围应用配置器” 在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器” ,然后单击展开“数据库引擎”, 选中“远程连接”,在右边选中“本地连接和远程连接”, 再选择要使用的协议,( 这个地方应当启用TCP/IP 和命名管道服务!)单击“应用”,您会看到消息: “直到重新启动数据库引擎服务后,对连接设置所做的更改才会生效。”单击“确定”按钮返回 。
    4 或是防火墙的问题:你把1433的端口加到例外去就可以了。

    H. jdbc连接数据库 加载成功却连不上

    这个可能是你的数据源没连接,打开控制面板—管理工具—数据源(ODBC)里面做一个与数据库连接就可能可以了
    希望对你有用

    I. 关于用JDBC连接数据库服务器,非活动超时的问题,请教高手

    听说默认的不使用超时是30分钟,失效超时是0,就是无效。那么默认就是30分钟会降低到连接池的最小值。如果设置了失效超时,那么连接达到失效超时那么久的未活动的时候,就会强行从数据库断开,无论目前是空闲还是被应用拿着,甚至连接池会降低到连接最小数一下,有时在监控中看到free
    pool为负数可能就是和这个有关。好处是防止连接泄露,和数据库网络故障导致的连接不可用。

    J. java jdbc 连接数据库断开 有时候能连接上有时候连接不上 什么原因

    func
    ReadFrom(){
    //test.txt
    内容是
    "未来"
    file,
    _
    :=
    os.Open("learngo/bytes/text.txt")
    buf
    :=
    bytes.NewBufferString("Learning
    swift.")
    buf.ReadFrom(file)
    //将text.txt内容追加到缓冲器的尾部
    fmt.Println(buf.String())
    }一般都用连接池来管理。实际应用中不会这样用,一般用C3P0或是DBCP连接池,还有WEB服务器的连接池.