JDBC:
- 概念:Java Database Connectivity,java数据库连接,Java语言操作数据库。
- JDBC本质:定义了操作所有关系型数据库的规则(接口),接口里面不同的实现类由不同的数据库厂商实现,这一实现类也叫数据库驱动或者jar包,我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包的实现类。
- 快速入门:
- 步骤:
- 导入驱动jar包
- 复制mysql-connector-java-5.1.48-bin.jar到项目的libs目录下
- 右键–>Add As Library
- 注册驱动
- 获取数据库的连接对象Connection
- 定义sql语句
- 获取执行sql语句的对象Statement
- 执行sql,接受返回值
- 处理结果
- 释放资源
- 导入驱动jar包
- 步骤:
- 详解各个对象:
- DriverManager:驱动管理对象
- 功能:
- 注册驱动:告诉程序该使用哪个数据库驱动jar包。
- static void registerDriver(Driver driver):注册给定的驱动程序DriverManager。
- 写代码时使用:Class.forName(“com.mysql.jdbc.Driver”);com.mysql.jdbc.Driver是Driver类的文件所在目录
- 通过查看源码发现:在com.mysql.jdbc.Driver类中存在静态代码块。
static { try { java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } }
- 注意mysql5之后的jar包可以省略注册驱动的步骤。
- 获取数据库连接
- 方法:
static Connection getConnection(String url, String user, String password);
- 参数:
- url:指定链接的路径,
- 语法:
jdbc://ip地址(域名):端口号/数据库名称
- 例:
jdbc:mysql://localhost:3306/db1
- 细节:如果连接的本机的mysql服务器,并且mysql服务器默认的端口是3306,则URL可以简写为
jdbc:///数据库名称
- 语法:
- user:用户名
- password:密码
- url:指定链接的路径,
- 方法:
- 注册驱动:告诉程序该使用哪个数据库驱动jar包。
- 功能:
- Connection:数据库连接对象
- 功能:
- 获取执行sql的对象(两种方法):
Statement createStatement()方法
PreparedStatement preparedStatement(String sql)方法
- 管理事务:
- 开启事务:
setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务
- 提交事务:
Commit()
- 回滚事务:
rollback()
- 开启事务:
- 获取执行sql的对象(两种方法):
- 功能:
- Statement:执行静态sql的对象
- 执行sql:
boolean execute(String sql):可以执行任意的sql
int executeUpdate(String sql):执行DML和DDL语句
- 返回值是sql语句的影响的行数,可以通过影响的行数判断DML语句是否执行成功,返回值>0则表示执行成功,反之失败。执行DDL语句时,成功返回的是0。
ResultSet executeQuery(String sql):执行DQL语句,返回的是结果集
- 练习:
- stu表 添加一条记录
package cn.itcast.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class JDBCDemo2 { public static void main(String[] args) { Statement stmt = null; Connection conn = null; try { //1.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //2.定义sql String sql = "insert into stu values(null,'猴哥',10000,47,null,null )"; //3.获取Connection对象 conn = DriverManager.getConnection("jdbc:mysql:///db1","root","root"); //4.获取执行sql对象 Statement stmt = conn.createStatement(); //5.执行sql int count = stmt.executeUpdate(sql); //6.处理结果 System.out.println(count); if (count > 0){ System.out.println("添加成功。"); } else System.out.println("添加失败!!!"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally { if (stmt != null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } }
- 执行sql:
- DriverManager:驱动管理对象