JDBC
是用于在 Java
语言编程中与数据库连接的 API
. JDBC
是一个规范,它提供了一整套接口,允许以一种可移植的访问底层数据库 API
。使用 JDBC驱动程序
来访问数据库,并用于存储数据到数据库中.
解释上面两幅图:
java应用程序通过JDBC API首先连接到JDBC Driver,这些JDBC驱动器都是由各大数据库厂家针对JDBC提供的,我们可以在网上下载jar包来使用,然后通过JDBC驱动器就能连接到我们的数据库了。
1.在项目当中创建一个文件夹为lib 2.把Mysql驱动包复制到该文件夹下 3.builder path 编译路径 复制代码
package con.meils.jdbc.conn; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionClass { public static void main(String[] args) throws ClassNotFoundException, SQLException { // TODO Auto-generated method stub // 1、加载驱动 // 把com.mysql.jdbc.Driver这份字节码加载进JVM // 当一份字节码加载进JVM的时候,就会执行字节码文件中的静态代码块 // 这里加载该字节码之后会实例化一个驱动器 Class.forName("com.mysql.jdbc.Driver"); // 2、连接 String url = "jdbc:mysql://localhost:3306/mytest"; String username = "root"; String password = "zjj19970517"; Connection connection = DriverManager.getConnection(url, username, password); // 3、验证连接 System.out.println(connection); // 如果有输出,表明连接成功 } } 复制代码
package con.meils.jdbc.ddl; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class CreateTable { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub // 1/加载驱动 // 把com.mysql.jdbc.Driver这份字节码加载进JVM // 当一份字节码加载进JVM的时候,就会执行字节码文件中的静态代码块 // 这里加载该字节码之后会实例化一个驱动器 Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/jdbc_db"; String username = "root"; String password = "zjj19970517"; // 2/ 连接数据库 Connection connection = DriverManager.getConnection(url, username, password); // 3/创建sql语句 String sql = "create table stu (id int , name varchar(20), age int)"; // 4/执行sql语句 Statement st = connection.createStatement(); int row = st.executeUpdate(sql); // 5/释放 st.close(); connection.close(); } } 复制代码
为什么要释放资源呢?
package con.meils.jdbc.dml; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class InsertClass { public static void main(String[] args) { // TODO Auto-generated method stub // ================ 插入数据 ================ Connection conn = null; Statement st = null; try { // 1、加载驱动 Class.forName("com.mysql.jdbc.Driver"); // 2、创建连接 String url = "jdbc:mysql://localhost:3306/mytest"; String user = "root"; String password = "zjj19970517"; conn = DriverManager.getConnection(url, user, password); // 3、创建sql语句 String sql = "insert into stu values(1, 'zjj', 20)"; st = conn.createStatement(); // 4、执行语句 int row = st.executeUpdate(sql); System.out.println(row); }catch (Exception e) { e.printStackTrace(); } finally { // 5、释放 if(st!=null) { try { st.close(); }catch (Exception e) { e.printStackTrace(); } } if(conn!=null) { try { conn.close(); }catch (Exception e) { e.printStackTrace(); } } } } } 复制代码
package con.meils.jdbc.dql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class QueryClass { public static void main(String[] args) throws SQLException, ClassNotFoundException { // TODO Auto-generated method stub // ================ 查询数据 ================ // 1/加载驱动 // 把com.mysql.jdbc.Driver这份字节码加载进JVM // 当一份字节码加载进JVM的时候,就会执行字节码文件中的静态代码块 // 这里加载该字节码之后会实例化一个驱动器 Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/mytest"; String username = "root"; String password = "zjj19970517"; // 2/ 连接数据库 Connection connection = DriverManager.getConnection(url, username, password); // 3/创建sql语句 String sql = "select count(*) as total from stu"; // 查询一共有几行数据 // 4/执行sql语句 Statement st = connection.createStatement(); ResultSet rs = st.executeQuery(sql); if(rs.next()) { int count = rs.getInt("total"); System.out.println(count); // 1 } // 5/释放 st.close(); connection.close(); } } 复制代码
数据类型对照表:
上面我们基本学会了如何与数据库打交道,但是这样使用存在许多的弊端,比如:每一步操作都进行一次数据库连接,造成浪费,所以我们在实际中要使用DAO思想来处理。
DAO(Data Access Object)数据存储对象,介于业务逻辑层和持久层之间,实现持久化数据访问。
不使用DAO的时候:
使用DAO的情况:
我们可以编写一个DAO接口,定义了常用的数据库操作方法,这时候我们同时会连接多个数据库,比如是mysql 和 oracle ,我们可以分别实现oracleDao和mysqlDao两个类,不同类里面定义不同的操作数据库的代码,实现的功能确实相同的。
所以面向接口编程是很重要的,也是一个很好的方式。