java连接mysql数据库

1.概念

首先理清几个概念,

JDBC:java数据库连接,是Orical公司的指定的一套规范接口

java数据库驱动:JDBC的实现类,由相应的数据库厂商提供,可以通过驱动去操作不同的数据库

在java-数据库这里,jdbc-api中的所有包都是java.sql或者javax.sql

2.JDBC的操作步骤:

 (1)建立数据库和表

 (2)创建项目

 (3)导入驱动jar包

 (4)注册驱动

  Class.forName("com.mysql.jdbc.Driver");

 (5)获取连接

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:端口号/项目名", "登录名", "密码");

package com.itheima.Utils;
import java.sql.Connection;
import java.sql.DriverManager;

/** 
 *实现java数据库连接的工具类
 *这里的代码没有使用配置文件,一旦相应的名称改变,就不可用
*/

public class JDBCUtils {
	public static Connection getConnection() throws Exception {
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql:///Pro";
		String userName = "root";
		String password = "123";
		Connection conn = DriverManager.getConnection("url", "userName", "password");
		return conn;
	}
}
package com.itheima.Utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ResourceBundle;

/**
 * 这里使用配置文件,将数据库的一些常量信息写到jdbc.properties文件中
 * 然后利用ResourceBundle类进行读取
 * 需要注意的是,每次进行连接的时候,没必要每次都加载Driver
 * 所以该代码将公共部分进行了提取,写到一个静态代码块中
 * 只在第一次连接的时候注册驱动
 * 
*/

public class JDBCUtils2 {
	
	static final String DRIVERCLASS;
	static final String URL;
	static final String USERNAME;
	static final String PASSWORD;
	
	static {
		ResourceBundle rsb = ResourceBundle.getBundle("jdbc");
		DRIVERCLASS        = rsb.getString("driverClass");
		URL                = rsb.getString("url");
		USERNAME           = rsb.getString("userName");
		PASSWORD           = rsb.getString("password");
	}
	
	static {
		try {
			Class.forName(DRIVERCLASS);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	public static Connection getConnection() throws ClassNotFoundException, SQLException {
		
		return DriverManager.getConnection(URL, USERNAME, PASSWORD);
	}
}

3.在数据库连接时,如果经常创建连接并释放,或造成运行缓慢,耗费时间,所以有了连接池,连接池里存放着连接。连接池创建的时候,会创建若干个连接,在需要时,从连接池内部取出,不使用时,将连接返还,这样避免了连接的反复创建和释放,从而节省了时间

常用的连接池为c3p0

package com.itheima.jdbcUtils;

import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 *java连接池工具类
 * c3p0连接池
 * 所有参数在配置文件c3p0.properties中
 * 
 * c3p0.properties配置文件 每个名字都不能写错
 * 
 * c3p0.driverClass=com.mysql.jdbc.Driver
 * c3p0.jdbcUrl=jdbc:mysql://127.0.0.1:3306/day12
 * c3p0.user=root
 * c3p0.password=123
 * 
*/
public class DataSourceUtils {
	
	private static ComboPooledDataSource ds = new ComboPooledDataSource();
	/**
	 * 得到数据源
	 * dbUtils工具类中,QueryRunner qr = new QueryRunner(DataSource ds)
	 * QueryRunner类中的参数是DataSource,所以本工具类很有必要写一个静态的函数,返回DataSource或其子类
	*/
	public static DataSource getDataSource() {
		return ds;
	}
	
	/**
	 * 如果使用dbUtils工具类,获取连接需要的参数为DataSource,不需要手动创建连接
	 * 所以本方法基本不会被调用
	*/
	public static Connection getConnection() throws SQLException {
		return ds.getConnection();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值