1、JDBC理解
JDBC( Java DataBase Connectivity )称为Java数据库连接,它是一种用于数据库访问的应用程序 API ,由一组用Java语言编写而成的类和接口组成,有了JDBC就可以用统一的语法对多种关系数据库进行访问,而不用担心其数据库操作语言的差异。
JDBC是sun提供一套用于操作数据库的标准接口,不同的数据厂商都提供了一套JDBC接口的实现,达成一个jar包发布,这个包叫驱动包;
JDBC接口中提供了:
1.DriverManager:加载驱动并负责与数据库连接;
2.Connection:表示与数据库的连接,负责管理事务,创建执行SQL语句的对象Statement;
3.Statement:用来执行SQL语句,若执行的是查询语句,会得到查询的结果集ResultSet;
4.ResultSet:表示查询的结果集,遍历结果集可以获取查询的具体数据
2、JDBC的体系结构
JDBC结构可以划分为两层:一个是面向底层的的JDBC Driver interface(驱动程序管理接口),另一个是面向程序员的JDBC API。
3、JDBC执行步骤
1)导入驱动jar包
2)加载驱动包
Class.forName("com.mysql.cj.jdbc.Driver");
3)获取连接(DriverManager提供了连接数据的方法getConnecttion(url,name,password)),返回Connection)
//建立连接地址(不同的数据库有不同的连接格式)
String url="jdbc:mysql://localhost:3306/gcddb";
//数据库账号
String name = "root";
//数据库密码
String pwd = "123456";
//获取连接
connection = DriverManager.getConnection(url,name,pwd);
4)定义SQL语句
String sql = "create table 数据库名(建表语句)"; //以创建表为例
5)获取PreparedStatement对象执行sql语句及相关方法
//PreparedStatement执行sql语句
ps = connection.prepareStatement(sql);
6)执行sql语句
ps.execute();
7)处理结果
8)释放资源
//释放资源
try{
if(connection!=null)
{
connection.close();
}
if(ps != null){
ps.close();
}
}
catch(Exception e){
e.printStackTrace();
}
***完整代码
package practice01;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
//创建表
public class DemoJDBC01 {
public static void main(String[] args) {
Connection connection = null;
PreparedStatement ps = null;
try{
//1.加载驱动包(不同的数据库有不同的驱动包)
Class.forName("com.mysql.cj.jdbc.Driver");
//2.建立连接地址(不同的数据库有不同的连接格式)
String url="jdbc:mysql://localhost:3306/gcddb";
//3.数据库账号
String name = "root";
//4.数据库密码
String pwd = "123456";
//5.获取连接(DriverManager提供了连接数据的方法getConnecttion(url,name,password)),返回Connection
connection = DriverManager.getConnection(url,name,pwd);
String sql = "create table myjdbc(id int primary key auto_increment,uname varchar(15),upwd varchar(10),money double)";
//6.获取PreparedStatement对象执行sql语句及相关方法
//PreparedStatement执行sql语句
ps = connection.prepareStatement(sql);
//7.执行sql
ps.execute();
System.out.println("连接成功");
}catch(Exception e){
System.out.println("连接失败");
}finally {
//释放资源
try{
if(connection!=null)
{
connection.close();
}
if(ps != null){
ps.close();
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
}
4.JDBC数据库连接池
1)为什么需要数据库连接池
①传统的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,再验证IP地址,用户名和密码。每次需要数据库连接的时候,就向数据库要求一个,频繁的进行数据库连接操作将占用很多的系统资源,容易造成服务器崩溃。
②每一次数据库连接,使用完后都得断开,如果程序出现异常而未能关闭,将导致数据库内存泄漏,最终将导致重启数据库。
③传统获取连接的方式,不能控制创建的连接数量,如连接过多,可能会导致MySQL崩溃。
2)连接步骤
*properties配置文件
driveName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:
name = root
password = 123456
maxActive = 5
maxWait = 8000;
*示例代码
package day02;
import practice01.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
/**
* 使用DBUtil对数据库进行操作
*/
//插入数据
public class DemoPreparedStatement01 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
try {
//插入数据
//获取Connection
conn = DBUtil.getConnection();
String sql = "insert into myjdbc values(null,?,?,?)";
//获取执行SQL的对象PreparedStatement
ps = conn.prepareStatement(sql);
ps.setString(1,"admin100");
ps.setString(2,"00000");
ps.setDouble(3,8000);
ps.executeUpdate();
System.out.println("插入成功");
} catch (Exception e) {
e.printStackTrace(); //日志跟踪
} finally {
}
}
}