JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。
1、带入驱动jar包
2、注册驱动
3、获取数据库链接对象 connection
4、注册sql
5、获取执行sql语句的对象 statement
6、执行sql,接受返回结果
7、处理结果
8、施放资源
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JdbcDemo {
public static void main(String[] args) throws Exception {
// 1、复制mysql-connector-java-5.1.37-bin.jar包到目录 然后Add as library;(加入到项目空间)
// 2、注册驱动
Class.forName("com.mysql.jdbc.Driver");//mysql5后的驱动可以省略注册驱动步骤
// 3、获取数据库链接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "admin");
// 4、定义sql语句
String sql = "update account set balance=1000 where id=1";
//5、获取执行sql对象 statement
Statement stmt = conn.createStatement();
//6、执行sql
int executeUpdate = stmt.executeUpdate(sql);
//7、处理结果
System.out.println(executeUpdate);
//8、施放资源
stmt.close();
conn.close();
}
}
//("mysql-connector-java-5.1.37");
//Class.forName("mysql-connector-java-5.1.37");
//Connection cnc = DriverManager.getConnection("jdbc:mysql:localhost:3306/db1","root","admin");
3、详解各个对象:
DriverManager :驱动管理 //
1、注册驱动
static void registerDriver(Driver driver) //向 DriverManager 注册给定驱动程序
###Class.forName("com.mysql.jdbc.Driver"); 真正注册的还是使用的DriverManager
2、注册数据库链接DriverManager.getConnection()(String url, String user, String password) ;
Connection:数据库链接对象
一、获取执行sql对象
1、Connection.createStatement() 创建一个 Statement 对象来将 SQL 语句发送到数据库。
2、prepareStatement(String sql) 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库
二、管理事务:
1、开启事务:void setAutoCommit(boolean autoCommit) :调用该方法设置fasle,及是开启事务
2、提交事务: void commit()
3、回滚事务 : void rollback(Savepoint savepoint)
Statement:执行sql的对象
boolean execute(String sql) //可以执行任意sql
executeUpdate(String sql) //执行DMl语句 (insert、updatr、delete)语句DDL(create,alter,drop)语句
ResultSet executeQuery(String sql) //DQL(select)查询语句 返回的是ResulySet结果集对象
ResulySet: 结果集对象
PreparedStatement: 执行sql对象
处理异常,解决内存泄露问题;比较完整的 JDBC 链接与施放流程
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JbdcDemo2 {
public static void main(String[] args) throws SQLException {
Connection con =null;//解决在程序末尾关闭施放内存的话会造成内存泄露问题,
Statement stmt=null;//解决在程序末尾关闭施放内存的话会造成内存泄露问题
//注册驱动
try {
Class.forName("com.mysql.jdbc.Driver");
//sql语句
String sql = "insert into account values(null,'奥斯卡',1500)";
String url = "jdbc:mysql://localhost:3306/db1";
String user="root";
String pwd = "admin";
try {
// Connection con = DriverManager.getConnection(url,user,pwd);
con = DriverManager.getConnection(url,user,pwd);//提升变量作用域解决finally施放资源的问题
// 获取执行数据库的对象
// Statement stmt = con.createStatement();
stmt = con.createStatement();
int i = stmt.executeUpdate(sql);//返回的结果是影响的行数
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
//施放链接sql对象;
// 防止空指针异常进行判断
if(stmt!=null){
stmt.close();
}
//施放数据库链接对象
//防止空指针异常进行判断
if(stmt!=null){
con.close();
}
}
}
}
JDBC练习updata 修改表中记录
import java.sql.*;
public class DbUpdateTest {
public static void main(String[] args) throws SQLException {
//定义链接对象;
Connection con = null;
//执行数据库对象
Statement stmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
//链接数据库对象
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1","root","admin");
//定义sql
String sql = "update account set balance=5000 where id = 5";
//获取执行sql对象;
stmt = con.createStatement();
//执行sql语句
stmt.executeUpdate(sql);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
if (con != null){
con.close();
}
if (stmt != null){
stmt.close();
}
}
}
}
JDBC 删除记录
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JdDelectTable {
public static void main(String[] args) throws SQLException {
//链接数据库对象
Connection conn = null;
//执行数据库对象
Statement stmt = null;
//注册驱动
// try {
// Class.forName("com.mysql.jdbc.Driver");
// } catch (ClassNotFoundException e) {
// e.printStackTrace();
// } 省略驱动注册代码,mysqljar5以后在链接数据库的时候也会自动创建
try {
//连接数据库
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1","root","admin");
//sql语句
String sql = "delete from account where id = 1 ";
//获取执行sql对象
stmt = conn.createStatement();
//执行sql语句
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}finally {
System.out.println("关闭");
//资源施放 先关闭执行对象 再关闭链接对象,关闭前进行判断如果没有连接上的话,就没必须要关闭
if(stmt != null){
stmt.close();
}
if(conn != null){
conn.close();
}
}
}
}
DJBC创建表
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class DjbcCreateTable {
public static void main(String[] args) throws SQLException {
//链接数据库对象
Connection conn = null;
//执行数据库对象
Statement stmt = null;
//注册驱动
// try {
// Class.forName("com.mysql.jdbc.Driver");
// } catch (ClassNotFoundException e) {
// e.printStackTrace();
// } 省略驱动注册代码,mysqljar5以后在链接数据库的时候也会自动创建
try {
//连接数据库
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1","root","admin");
//sql语句
String sql = "create table student1(age int,name varchar(20) )";
//获取执行sql对象
stmt = conn.createStatement();
//执行sql语句
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}finally {
System.out.println("关闭");
//资源施放 先关闭执行对象 再关闭链接对象,关闭前进行判断如果没有连接上的话,就没必须要关闭
if(stmt != null){
stmt.close();
}
if(conn != null){
conn.close();
}
}
}
}