使用java程序连接mysql数据库,实现java程序操作数据库中的数据
-
概述
- 本文浅谈如何使用java程序操作mysql数据库的方法。首先,连接数据库的方法有ODBC(开放数据库连接(Open Database Connectivity))和JDBC(Java DataBase Connectivity,java数据库连接)两种方式,日常开发中主要使用jdbc来操作,所以本文主要讲述jdbc的使用。
- 要使用java程序操作数据库,首先需要导入mysql为我们提供的jar包。这些包可以在
https://dev.mysql.com/downloads/connector/j/
这个网页上下载。将下载好的jar包导入项目中操作如下:将jar包复制到项目目录下在jar包上右键选择Add as Library导入 - 方式一,最基础的方式,代码如下:使用Class.forName()加载参数指定的类,并且初始化它,新建一个msql的driver对象,并将其注册到DriverManager中去。这种方式比较简单。
static {
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("驱动加载成功");
} catch (ClassNotFoundException e) {
System.out.println("驱动加载失败");
e.printStackTrace();
}
}
public Connection getConnection(){
Connection connection = null;
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
-
测试方法如下。
-
方式二
- 使用dbcp((DataBase Connection Pool)数据库连接池)的方式,在创建新的数据库连接时是比较耗费资源的,并且在使用结束后,我们也需要将资源关闭。频繁的创建会比较耗费资源,所以我们在这里介绍这种数据库连接池的方式,他的优点是通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。缺点是存在BUG,在某些种情会产生很多空连接不能释放,并且没有即时监控连接池状态的功能。
他要使用需要依赖这两个jar包commons-pool-1.3.jar commons-dbcp-1.2.jar
这两个jar包
使用dbcp有两种加载配置文件的方式
-在项目的目录下创建一个以
.properties
结尾的配置文件,内容如下: - 使用dbcp((DataBase Connection Pool)数据库连接池)的方式,在创建新的数据库连接时是比较耗费资源的,并且在使用结束后,我们也需要将资源关闭。频繁的创建会比较耗费资源,所以我们在这里介绍这种数据库连接池的方式,他的优点是通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。缺点是存在BUG,在某些种情会产生很多空连接不能释放,并且没有即时监控连接池状态的功能。
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123456
initialSize=30 //这项是设置初始连接池的大小
**注意:**这个配置文件中的key的名字不可修改固定这样写,修改的话,加载时会找不到这个key会出错。其它一些设置的key如果需要使用可自行查找配置。
- 创建连接的代码如下:
public Connection getConnection() throws Exception {
//创建文件输入流对象,引入配置文件
FileInputStream file = new FileInputStream("./src/com/wdhcr/dbcp/db.properties");
Properties properties = new Properties();
//加载配置文件
properties.load(file);
//通过数据源工厂创建一个数据源
DataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
//获取一个连接
return dataSource.getConnection();
}
以上就是使用dbcp的方式创建数据库连接,但是他bug多,目前已经不太使用这种方式了,测试方式与方式一的方法一样。
- 测试方法如下。
- 方式三
- 使用c3p0(开源的JDBC连接池),C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
- C3P0相对于DBCP
dbcp没有自动回收空闲连接的功能
c3p0有自动回收空闲连接功能 - 实现所需要的jar包
mchange-commons-java-0.2.3.4.jar
c3p0-0.9.2.1.jar
mysql-connector-java-5.1.38-bin.jar
- 下载地址:
http://www.mvnrepository.com/
可以在这个网页搜索下载。 - C3P0的四种实现方式
- 方式一:在代码中写死数据库配置信息 ,这种方式不利于后期用户修改,修改比较麻烦,所以不建议使用,本文只是介绍它的实现实现方式,代码如下:
public Connection getConnection() {
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
Connection connection = null;
try {
//设置数据库连接池
comboPooledDataSource.setDriverClass("driverClassName");
comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
comboPooledDataSource.setUser("root");
comboPooledDataSource.setPassword("123456");
//获取链接
connection = comboPooledDataSource.getConnection();
} catch (PropertyVetoException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
- 方式二:单独创建一个配置文件(.properties)结尾的文件,将数据库连接池的配置信息放入其中,当后期需要修改时,只需要用户在配置文件中修改即可,不需要修改源码。代码实现如下
- 创建配置文件:放在当前前项目包目录下,代码如下:
driverClassName =com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/test
username = root
password = 123456
initialSize=30
- 获取连接的代码如下,这里需要注意的是
properties.getProperty("driverClassName")
这个代码块中的字符串必须要和上面配置文件中的key的值相同,否则在加载的时候会找不到对象值。
public Connection getConnection(){
Connection connection = null;
try {
//获取配置文件
FileInputStream fileInputStream = new FileInputStream("./src/com/wdhcr/jdbc/c3p0/db.properties");
//创建配置文件对象
Properties properties = new Properties();
//通过方法加载配置文件
properties.load(fileInputStream);
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
//设置连接池属性
comboPooledDataSource.setDriverClass(properties.getProperty("driverClassName"));
comboPooledDataSource.setJdbcUrl(properties.getProperty("url"));
comboPooledDataSource.setUser(properties.getProperty("username"));
comboPooledDataSource.setPassword(properties.getProperty("password"));
comboPooledDataSource.setInitialPoolSize(Integer.parseInt(properties.getProperty("initialSize")));
//获取链接
connection = comboPooledDataSource.getConnection();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (PropertyVetoException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
- 方式三:通过创建对象,让对象自己加载默认的xml配置文件
- 注意:
xml文件必须放在项目的根目录路径下,否则找不到。
xml文件名必须是:c3p0-config.xml
xml文件格式必须如下:
<?xml version="1.0" encoding="UTF-8" ?>
<c3p0-config>
<!-- 默认配置文件格式-->
<default-config>
<property name = "driverClass">com.mysql.jdbc.Driver</property>
<property name = "jdbcUrl">jdbc:mysql://localhost:3306/test</property>
<property name = "user">root</property>
<property name = "password">123456</property>
</default-config>
</c3p0-config>
xml文件中的字段名也不能修改,格式只能是这样,在这个文件中还可以添加其他一下属性,在这里只是演示基本格式。
- 获取连接的方法如下:
public Connection getConection(){
//当创建这个类的对象时,就会自己去项目路径下寻找`c3p0-config.xml`文件,并加载配置信息
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
Connection connection = null;
try {
connection = comboPooledDataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
- 方式四:通过自定义xml文件配置数据库连接池
- 注意:
xml文件必须放在项目的根目录路径下,否则找不到。
xml文件名必须是:c3p0-config.xml
xml文件格式必须如下:
<?xml version="1.0" encoding="UTF-8" ?>
<c3p0-config>
<!-- 自定义配置信息-->
<name-config name = "myConfig"><!-- 这里的配置文件名自己随便起-- >
<property name = "driverClass">com.mysql.jdbc.Driver</property>
<property name = "jdbcUrl">jdbc:mysql://localhost:3306/test</property>
<property name = "user">root</property>
<property name = "password">123456</property>
</name-config>
</c3p0-config>
- 获取连接的方法代码如下:
public Connection getConnection(){
//注意在创建对象时的参数及为你自定义配置信息的名字
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource("myConfig");
Connection connection = null;
try {
connection = comboPooledDataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
- 测试的方法如下。
- 方式四
- 使用DRUID的方式
- 介绍:DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池,
- 实现所需要的jar包:
mysql-connector-java-5.1.38-bin.jar
druid-1.1.5.jar
- 实现方式:
- 方式一:将配置信息写死在源码中,这样不利于后期用户修改,和维护。代码如下:
public Connection getConnection(){
DruidDataSource druidDataSource = new DruidDataSource();
//配置数据库连接池的属性信息
druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
druidDataSource.setUrl("jdbc:mysql://localhost:3306/test");
druidDataSource.setUsername("root");
druidDataSource.setPassword("123456");
DruidPooledConnection connection = null;
try {
//获取连接
connection = druidDataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
- 方式二:创建配置文件,通过文件加载的方式把配置信息加载到代码中来配置数据库连接池,这样有利于后期修改和维护。
- 创建配置文件
在当前项目包的路径下创建例如:db.properties
这样的配置文件,代码如下:
driverClassName =com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/test
username = root
password = 123456
- 获取连接方法的代码如下:
- 注意:
properties.getProperty("driverClassName")
这个方法中的字符串一定要和配置文件中的key值保持一致,否则会找不到对应的values值。
public Connection getConnection() {
DruidDataSource druidDataSource = new DruidDataSource();
DruidPooledConnection connection = null;
//读取配置文件
try {
//这里的路径一定要写对以./src开头开始写,否则会找不到该文件
FileInputStream fileInputStream = new FileInputStream("./src/com/wdhcr/jdbc/driud/db.properties");
//创建配置文件对象
Properties properties = new Properties();
//通过方法加载配置文件
properties.load(fileInputStream);
//配置数据库连接池
druidDataSource.setDriverClassName(properties.getProperty("driverClassName"));
druidDataSource.setUrl(properties.getProperty("url"));
druidDataSource.setUsername(properties.getProperty("username"));
druidDataSource.setPassword(properties.getProperty("password"));
//获取链接
connection = druidDataSource.getConnection();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
-
测试方法如下
-
如何测试是否获取到连接了呢。
-
他的测试方式如下:创建一个测试类,在主方法中创建方法类的对象,通过打印对象.方法名的方式检测是否成功获取获取到连接。
public class Test {
public static void main(String[] args) {
Conn conn = new Conn();
System.out.println(conn.getConnection());
}
}
当执行以上这段代码的结果如下时就说明创建连接成功:
加载驱动成功!!
com.mysql.jdbc.JDBC4Connection@68de145
- 以上文章简单的讲述了jdbc的几种方式来连接mysql数据库。希望多多指教!!!