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

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

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

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

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

二:驱动字符串出错(commysqljdbcDriver)

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

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

一般的话,一个数据库连接用完之后是要关闭的。

如果是一个项目的话一般使用数据库连接池,如果有多个数据库的话最好是建立多个连接池,这样的话,在系统启动时,一次加载一定数量的连接对象,用完之后放回去。

如果你仅仅需要两个数据库连接对象的话,不如分别创建两个静态全局变量来保存两个数据库的连接对象。

第一种:使用JDBC的ACCESS驱动程序:

在java sun com下载ACCESS的JDBC驱动程序。

第二种:使用JDBC-ODBC桥访问:

ClassforName("sunjdbcodbcJdbcOdbcDriver");

conn = DriverManagergetConnection("jdbc:odbc:dbaccess");

第三种:直接访问ACCESS数据库,不使用JDBC-ODBC桥:

ClassforName("sunjdbcodbcJdbcOdbcDriver");

String url= "jdbc:odbc:driver={Microsoft Access Driver (mdb)};DBQ=access\\dbaccessmdb";

String uname = "";

String password = "";

Connection conn = DriverManagergetConnection(url, uname, password);

注:

access 2007 数据库的驱动文件是专用的 叫AccessDatabaseEngineexe

Access2007 或2010连接字符串:

String strurl= "jdbc:odbc:DRIVER={Microsoft Access Driver (mdb, accdb)};DBQ=F:/Program Files/apache-tomcat-708/webapps/ROOT/mywebstore/mywebstoreaccdb";

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

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

解决方法:

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

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

[java] view plain copy

if (connisValid(1000)){

return conn;

}

else{

return thisCreateConnection();

}

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

连接池的概念:

用池来管理Connection,这可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。

JDBC数据库连接池接口(DataSource):

Java为数据库连接池提供了公共的接口:javaxsqlDataSource,各个厂商可以让自己的连接池实现这个接口。这样应用程序可以方便的切换不同厂商的连接池!

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库 *** 作的性能。

在Java中开源的数据库连接池有以下几种 :

1, C3P0 C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。

2,Proxool 这是一个Java SQL Driver驱动程序,提供了对你选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中。完全可配置。快速,成熟,健壮。可以透明地为你现存的JDBC驱动程序增加连接池功能。

3,Jakarta DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池DBCP可以直接的在应用程序用使用。

4,DDConnectionBroker DDConnectionBroker是一个简单,轻量级的数据库连接池。

5,DBPool DBPool是一个高效的易配置的数据库连接池。它除了支持连接池应有的功能之外,还包括了一个对象池使你能够开发一个满足自已需求的数据库连接池。

6,XAPool XAPool是一个XA数据库连接池。它实现了javaxsqlXADataSource并提供了连接池工具。

7,Primrose Primrose是一个Java开发的数据库连接池。当前支持的容器包括Tomcat4&5,Resin3与JBoss3它同样也有一个独立的版本可以在应用程序中使用而不必运行在容器中。Primrose通过一个web接口来控制SQL处理的追踪,配置,动态池管理。在重负荷的情况下可进行连接请求队列处理。

8,SmartPool SmartPool是一个连接池组件,它模仿应用服务器对象池的特性。SmartPool能够解决一些临界问题如连接泄漏(connection leaks),连接阻塞,打开的JDBC对象如Statements,PreparedStatements等 SmartPool的特性包括支持多个pools,自动关闭相关联的JDBC对象, 在所设定time-outs之后察觉连接泄漏,追踪连接使用情况, 强制启用最近最少用到的连接,把SmartPool"包装"成现存的一个pool等。

9,MiniConnectionPoolManager MiniConnectionPoolManager是一个轻量级JDBC数据库连接池。它只需要Java15(或更高)并且没有依赖第三方包。

10,BoneCP BoneCP是一个快速,开源的数据库连接池。帮你管理数据连接让你的应用程序能更快速地访问数据库。比C3P0/DBCP连接池快25倍。

以上就是关于jdbc连接MySQL总是出错,请问是什么原因,有没有解决办法全部的内容,包括:jdbc连接MySQL总是出错,请问是什么原因,有没有解决办法、JAVA 使用JDBC连接MYSQL数据库时,连接不同数据库的方法、JDBC连接Access数据库的几种方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10127705.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存