jdbc

数据库连接池原理

可紊 提交于 2020-03-15 09:31:55
—— 连接池用什么数据结构实现? —— 实现连接池的代码 —— 线程安全问题 【数据库连接池的设计思路及java实现】【 http://blog.csdn.net/shijinupc/article/details/7836129】 【Java的JDBC数据库连接池实现方法】【 http://developer.51cto.com/art/200907/137300.htm 】 ​ 【设计数据库连接池,要考虑哪些问题?】 1. 有一个简单的函数从连接池中 得到 一个 Connection。 2. close 函数必须将connection 放回 数据库连接池。 3. 当数据库连接池中没有空闲的connection,数据库连接池必须能够 自动增加 connection 个数。 4. 当数据库连接池中的connection 个数在某一个特别的时间变得很大,但是以后很长时间只用其中一小部分, 自动将多余connection 关闭 。 5. 如果可能,应该提供debug信息 报告没有关闭的 new Connection。 【四个流行的Java连接池】 C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。 BoneCP

jdbc的连接池

你。 提交于 2020-03-15 09:30:28
dbcp的中文文档帮助 http://blog.csdn.net/recall03/article/details/19430379 dbcp : 通过       // 新建一个基础数据源 BasicDataSource basicDataSource = new BasicDataSource();     basicDataSource.连接数据库的信息,保存    然后     // 新建一个数据库链接工厂 进行生产 基于连接数据库的这个产品去生产 ConnectionFactory = new DataSourceConnectionFactory(basicDataSource); 数据库的连接就改为 工厂.属性    conn = ConnectionFactory.createConnection(); c3p0:    c3p0 = new ComboPooledDataSource();    数据库的连接就改为 conn = c3p0.getConnection(); 参数 描述 username 传递给JDBC驱动的用于建立连接的用户名 password 传递给JDBC驱动的用于建立连接的密码 url 传递给JDBC驱动的用于建立连接的URL driverClassName 使用的JDBC驱动的完整有效的java 类名

JDBC 线程安全 数据库连接池

烂漫一生 提交于 2020-03-15 09:27:12
jdbc 是线程安全的,但是, 推荐一个线程用一个链接 JDBC is thread safe: It is quite OK to pass the various JDBC objects between threads. For example, you can create the connection in one thread; another thread can use this connection to create a PreparedStatement and a third thread can process the result set. The single major restriction is that you cannot have more than one ResultSet open on a single PreparedStatement at any time . See Does Oracle DB support multiple (parallel) operations per connection?    你不能在一个statment上面存在超过一个打开的resultset(不打开的可以有多个)。 Note that a database commit occurs on a Connection, and so all

Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'createtime' at row 1...

拥有回忆 提交于 2020-03-15 05:33:10
之前项目一直好好的,之后电脑重装系统,数据库重新安装了一个5.6版本的,项目jar包丢失了,之后就又重新找了一些jar包倒入,结果运行报错: Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'createtime' at row 1... 后来网上搜索说貌似是jar包版本的问题,于是乎就换了jar包,我的jar包是mysql-connector-java-5.0.4-bin,之后换了mysql-connector-java-5.1.27-bin导入之后ok没问题! mysql-connector-java-5.1.27-bin下载链接 http://download.csdn.net/download/baencong/6904047 希望能帮到和我遇到同样问题的人! 来源: https://www.cnblogs.com/zyh1994/p/6868802.html

JDBC调用存储过程

你离开我真会死。 提交于 2020-03-14 21:54:04
在JDBC API中提供了调用存储过程的方法,通过CallableStatement对象进行操作。CallableStatement对象位于java.sql包中,它继承于Statement对象,主要用于执行数据库中定义的存储过程,其调用方法如下: {call <procedure-name>[(<arg1>,<arg2>,...)]} 其中,arg1、arg2为存储过程中的参数,如果存储过程中需要传递参数,可以对其进行赋值操作。 技巧:存储过程是一个SQL语句和可选控制流语句的预编译集合。编译完成后存放在数据库中,这样就省去了执行SQL语句时对SQL语句进行编译所花费的时间。在执行存储过程时只需要将参数传递到数据库中,而不需要将整条SQL语句都提交给数据库,从而减少了网络传输的流量,从另一方面提高了程序的运行速度。 例1.1 创建查询所有图书信息的存储过程,通过JDBC API对其调用获取所有图书信息,并将其输出到JSP页面中。 (1)在数据库test中创建名称为findAllBook的存储过程,用于查询所有图书信息。关键代码如下: BEGIN SELECT* FROM books ORDER BY id DESC; END 各种数据库创建存储过程的方法并非一致,本实例使用的是MySQL数据库,如果使用其他数据库创建存储过程请参阅数据库提供的帮助文档。 (2)

JAVA调用数据库存储过程

前提是你 提交于 2020-03-14 21:52:51
1.首相给数据库创建一个简单的存储过程:(在这里我是创建的Oracle数据库的存储过程) create or replace procedure stu_upd(nname varchar2,npassword varchar2) is begin update student set name=nname where password=npassword; end pl_pro; create or replace procedure stu_del(nid number)is begin delete from student where ID=nid; end stu_del; create or replace procedure stu_ins(nid number,nname varchar2,npassword varchar2,nage varchar2,nemail varchar2)is begin insert into student(id,name,password,age,email) values(nid,nname,npassword,nage,nemail); end stu_ins; 2.通过JAVA程序与数据库建立连接: package jdbc; import java.io.FileInputStream; import java.io

JDBC4.0自动加载驱动器类

感情迁移 提交于 2020-03-14 16:47:19
关于驱动包 jdbc中注册驱动,首先导入对应的包,例如mysql-connector-java-5.0.8-bin.jar。驱动包是java和具体数据库之间的连接桥梁,由数据库厂商开发。每一种数据库对应一款驱动jar,甚至每一个版本的数据库都有自己对应版本的驱动jar。 关于java.sqlDriverManger类 Java的驱动管理类。管理一组 JDBC 驱动程序。 javax.sql.DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法。 使用 DataSource 对象是连接到数据源的首选方法。 DiverManager.class里有个属性drivers,它实际上是一个vector(向量)。可在列表中加入很多驱动,当DriverManager去取连接的时候,若果drivers里有很多驱动,它会把drivers里面的各个驱动的url和创建连接时传进来的url逐一比较,遇到对应的url,则建立连接。 注册驱动的三种方式: 1)DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。 具体来说就是: 1,加载的时候注册一次驱动(原因请看第三中注册方式),实例化的时候又注册一次。所以两次。

Can Java program establish JDBC Connection via Proxy Server

≯℡__Kan透↙ 提交于 2020-03-14 12:55:41
问题 I want to communicate to Oracle DB Server which sits outside my network via the proxy server. I can access the web application hosted on the same machine via Browser with proxy settings. Can a simple Java program establish JDBC Connection thru the proxy server? * To provide an example will be better * Regards. 回答1: If the proxy is only a HTTP proxy, then no. But if the proxy transfers TCP/IP trafic, then you can. How to do that, look at How do I set the proxy to be used by the JVM or http:/

Java自学-JDBC 增、删、改

感情迁移 提交于 2020-03-14 11:21:26
JDBC 增、删、改 CRUD是最常见的数据库操作,即增删改查 C 增加(Create) R 读取查询(Retrieve) U 更新(Update) D 删除(Delete) 在JDBC中增加,删除,修改的操作都很类似,只是传递不同的SQL语句就行了。 步骤 1 : 增加 这段代码就是Hello JDBC中的代码,用于向数据库中插入数据 package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class TestJDBC { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try ( Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root", "admin")

JDBC技术预研选型依据【转】

非 Y 不嫁゛ 提交于 2020-03-13 23:47:15
http://songwie.com/articlelist/44 mycat分布式mysql中间件(mysql中间件研究) 发表回复 mysql中间件研究( Atlas,cobar,TDDL,mycat,heisenberg,Oceanus,vitess, OneProxy ) mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品,Atlas,cobar,tddl,让我们看看它们各自有些什么优点和新特性吧。 Atlas Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。 Altas架构: Atlas是一个位于应用程序与MySQL之间,它实现了MySQL的客户端与服务端协议,作为服务端与应用程序通讯,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。 以下是一个可以参考的整体架构,LVS前端做负载均衡,两个Altas做HA,防止单点故障。 Altas的一些新特性