1.8201.1JDBC概述基本介绍
1.JDBC为访问不同数据库提供了统一的接口,屏蔽了用户的细节。
2.Java程序员使用JDBC连接任何提供JDBC驱动程序的数据库系统,以完成数据库的各种操作。
3.JDBC基本原理图[重要!]
4.模拟JDBC
2.模拟JDBC821代码的com.stulzl.jdbc.myjdbc.JdbcInterface接口
package com.stulzl.jdbc.myjdbc;///我们规定的Jabc接口方法 821public interface JdbcInterface { //连接 public Object getConnection(); ////crud增删查看 public void crud(); ///关闭连接 public void close();}
MysqlJdbcimpl类
package com.stulzl.jdbc.myjdbc;///mysql数据库实现了我们模拟的jdbc接口 821public class MysqlJdbcImpl implements JdbcInterface{ @Override public Object getConnection() { System.out.println(“mysql连接”); return null; } @Override public void crud() { System.out.println(“完成mysql的增删改查”); } @Override public void close() { System.out.println(“关闭mysql的增删改查”); }}
OracleJdbcimpl类
package com.stulzl.jdbc.myjdbc;///模拟oracle数据库实现Jdbccle 821public class OracleJdbcImpl implements JdbcInterface{ @Override public Object getConnection() { System.out.println(“oracle连接”); return null; } @Override public void crud() { System.out.println(“完成对oracle的增删改查”); } @Override public void close() { System.out.println(“关闭oracle的增删改查”); }}
TestJdbc测试类别
package com.stulzl.jdbc.myjdbc;///模拟Mysql数据库实现JDBCC 821public class TestJdbc { public static void main(String[] args) { ///完成mysql的操作 821 JdbcInterface jdbcInterface = new MysqlJdbcImpl(); jdbcInterface.getConnection();//通过接口调用方法,涉及动态绑定 jdbcInterface.crud(); jdbcInterface.close(); System.out.println(======================); ///完成oracle操作 821 JdbcInterface jdbcinterface2 = new OracleJdbcImpl(); jdbcinterface2.getConnection();//通过接口调用方法,涉及动态绑定 jdbcinterface2.crud(); jdbcinterface2.close(); }}
2.JDBC带来的好处821
2.JDBC的好处(示意图)
3.说明:JDBC是Java为数据库操作提供的接口API,Java程序员只需要编程这个接口。不同的数据库制造商需要为这个接口提供不同的实现。
3.JDBCAPI822JDBCAPI是一系列接口。它统一和规范了应用程序与数据库之间的连接,执行SQL语句,并获得返回结果。相关类别和接口在Java.sql与javax.sql包中
4.JDBC快速入门8224.1JDBC程序编写步骤1.注册驱动-加载Driver
获得连接-获得Connection
3.执行增删改查-向mysq发送SQL|执行
4.释放资源-关闭相关连接
4.2JDBC第一个程序822添加表actor通过jdbc进行删除和修改
com中的代码.stulzl.jdbc_.Jdbc01
package com.stulzl.jdbc_;import com.mysql.jdbc.Driver;import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;//这是第一个Jdbc程序,完成简单的操作 822public class Jdbc01 { public static void main(String[] args) throws SQLException { ///前置工作: 例如,在项目下创建文件夹 libs // 将 mysql.jar 将其复制到目录下,点击 add to project ..加入项目 //得到驱动 Driver driver = new Driver();////创建driver对象 //得到连接 //(1) jdbc:mysql:// 规定表达协议,通过 jdbc 的方式连接 mysql //(2) localhost 主机,可以是 ip 地址 //(3) 3306 表示 mysql 监听的端口 //(4) hsp_db02 连接到 mysql dbms 哪个数据库 //(5) mysql 连接的本质是我以前学过的 socket 连接 String url = "jdbc:mysql://localhost:3306/hsp_db02"; ///将用户和密码放到Properties对象中 Properties properties = new Properties(); properties.setProperty("user","root");//用户 properties.setProperty("password","lzl");//密码 //获取连接 Connection connect = driver.connect(url, properties); //执行sql ///添加一个sql语句 ///解释这里的null是自增长的,因为数据库是这样设计的 //String sql = "insert into actor values(null,"刘德华","男"'1970-11-11','110')"; //修改 //String sql = "update actor set name='周星驰' where id = 1"; //删除 String sql = "delete from actor where id = 1"; //statement 用于静态执行 SQL 句子并返回对象产生的结果 Statement statement = connect.createStatement(); int rows = statement.executeUpdate(sql);// 如果是 dml 语句,返回是影响行数 System.out.println(rows>0?"成功":"失败"); //关闭连接资源 statement.close(); connect.close(); }}
数据库E:java学习\初级\course168db_actor_
-- 创建测试表 演员表 822CREATE TABLE actor ( -- 演员表id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(32) NOT NULL DEFAULT '',sex CHAR(1) NOT NULL DEFAULT '女',borndate DATETIME,phone VARCHAR(12));SELECT * FROM actor
5.获取数据库连接5种方式8235.1方式1823
5.2方式2823
5.3方式3824
5.4方式4825
提示:
1.mysql驱动5.11.6可能不需要CLasss.forName("com.mysql.jdbc.Driver");
2.从jdk1.5使用jdbc4后,不再需要显示和调用class.forName()注册驱动,自动调用驱动
jar包下META-INF\services\javasql.注册Driver文本中的类名
5.5方式5826 com中的代码.stulzl.jdbc_conn.JdbcConn
package com.stulzl.jdbc_conn;import com.mysql.jdbc.Driver;import org.junit.jupiter.api.Test;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Properties;//java连接Mysql的五种方式 823public class JdbcConn { @Test //方式1 823 public void connect01() throws SQLException { Driver driver = new Driver();////创建driver对象 String url = "jdbc:mysql://localhost:3306/hsp_db02"; ///将用户和密码放到Properties对象中 Properties properties = new Properties(); properties.setProperty("user","root");//用户 properties.setProperty("password","lzl");//密码 //获取连接 Connection connect = driver.connect(url, properties); System.out.println(“方式1=””+connect); } //方式2 823 @Test public void connect02() throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException { //使用反射加载 Driver 类 , 动态加载,更灵活,减少依赖性 Class aClass = Class.forName("com.mysql.jdbc.Driver"); Driver driver = (Driver)aClass.newInstance(); String url = "jdbc:mysql://localhost:3306/hsp_db02"; ///将用户和密码放到Properties对象中 Properties properties = new Properties(); properties.setProperty("user","root");//用户 properties.setProperty("password","lzl");//密码 //获取连接 Connection connect = driver.connect(url, properties); System.out.println(方法2=”+connect); } //方式 3 使用 DriverManager 替代 driver 统一管理 824 @Test public void connect03() throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException { ///用反射加载Driver Class aClass = Class.forName("com.mysql.jdbc.Driver"); Driver driver = (Driver)aClass.newInstance(); //创建url、user和password String url = "jdbc:mysql://localhost:3306/hsp_db02"; String user = "root"; String password = "lzl"; DriverManager.registerDriver(driver);///注册Driver驱动 Connection connection = DriverManager.getConnection(url, user, password); System.out.println(“方式3=””+connection); } //方式4 使用 Class.forName 注册驱动器自动完成,代码简化 825 ///以这种方式获取连接是最常用的,推荐使用 @Test public void connect04() throws ClassNotFoundException, SQLException { ///用反射加载Driver //在加载 Driver 类时,完成注册 /* 源码: 1. 在类加载时,静态代码块,会执行一次. 2. DriverManager.registerDriver(new Driver()); 3. 因此注册 driver 工作已经完成 static { try { DriverManager.registerDriver(new Driver()); } catch (SQLException var1) { throw new RuntimeException("Can't register driver!"); } } */ Class.forName("com.mysql.jdbc.Driver"); //创建url、user和password String url = "jdbc:mysql://localhost:3306/hsp_db02"; String user = "root"; String password = "lzl"; Connection connection = DriverManager.getConnection(url, user, password); System.out.println(方法4=”+connection); } //方式5在方式上 4 在改进的基础上,增加文件配置,让连接 mysql 更加灵活 826 @Test public void connect05() throws IOException, ClassNotFoundException, SQLException { //通过 Properties 对象获取配置文件的信息 Properties properties = new Properties(); properties.load(new FileInputStream("src\\mysql.properties")); //获取相关值 String user = properties.getProperty("user"); String password = properties.getProperty("password"); String driver = properties.getProperty("driver"); String url = properties.getProperty("url"); Class.forName(driver);//建议写上 Connection connection = DriverManager.getConnection(url, user, password); System.out.println(“方法5=””+connection); }}
SRC下的mysqll配置文件.properties
user=rootpassword=lzlurl=jdbc:mysql://localhost:3306/hsp_db02driverdriver=com.mysql.jdbc.Driver