一、知识归纳: 1.JDBC的作用:Java获取数据库中的数据或者将数据存储到数据库中 2.JDBC是什么:Java 操作数据库技术,一套API 3.JDBC的操作数据库过程 a)加载驱动(前提:需要将对于的jar包添加到项目中) Class.forName("驱动类"); b)建立与数据库的连接 Connection cOnn= DriverManger.getConnection(url,username,password); c)创建声明对象 Statement stmt = conn.createStatement(); d)执行SQL语句(创建结果集对象) String sql="SQL语句" ResultSet rs = stmt.executeQuery(sql); //在执行的时候需要提供SQL语句 [int rows = stmt.executeUpdate(sql) ;] e)解析结果集 while(rs.next()){ rs.getXXX("字段名") //表示获取当前行中该字段的值 } f)关闭 关闭结果集对象 rs.close(); 关闭声明对象stmt.close(); 关闭连接对象conn.close(); 4.预处理语句 String sql="SQL语句"; PreparedStatement pstmt = conn.preparedStatement(sql); pstmt.setXXX(index, 值); pstmt.executeQuery(); [int rows = pstmt.executeUpdate() ;] 5.import java.sql.Connection:连接 class MySqlConnection implements Connection{ //具体实现Mysql数据库的连接过程 } java.sql.Statement:执行sql语句的 java.sql.ResultSet:结果集 java.sql.PreparedStatement:建立预处理语句的 小结:如果需要操作具体某个数据库则需要下载对应的驱动包
二、JDBC(Java DataBase Connectivity Java数据库连接) JDBC是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。三、JDBC体系结构 JDBC API支持用于数据库访问的两层和三层处理模型,但通常,JDBC体系结构由两层组成: JDBC API:这提供了应用程序到JDBC管理器连接。 JDBC驱动程序API:这支持JDBC管理器到驱动程序连接。四、通用JDBC 组件? DriverManager: 此类管理数据库驱动程序列表。使用通信子协议将来自java应用程序的连接请求与适当的数据库驱动程序匹配。? Driver:此接口处理与数据库服务器的通信。通常很少会直接与Driver对象进行交互,而是使用DriverManager对象来管理这种类型的对象。? Connection:该界面具有用于联系数据库的所有方法。连接对象表示通信上下文,即,与数据库的所有通信仅通过连接对象。? Statement:使用从此接口创建的对象将SQL语句提交到数据库。除了执行存储过程之外,一些派生接口还接受参数。? ResultSet:在使用Statement对象执行SQL查询后,这些对象保存从数据库检索的数据。它作为一个迭代器,允许我们移动其数据。? SQLException:此类处理数据库应用程序中发生的任何错误。
五、抽出工具(Properties文件) driverClass = com.mysql.jdbc.Driver url = jdbc:mysql://localhost:3306/数据库 username = root password = 123456 //读取Properties文件中的内容 public class Lesson { public static void main(String[] args) { Properties p = new Properties(); InputStream is = Lesson.class.getClassLoader().getResourceAsStream("jdbc.properties"); try { p.load(is); String driver = p.getProperty("driverClass"); System.out.println(driver); } catch (IOException e) { e.printStackTrace(); } } }
六、封装工具类(JdbcUtils) package com.jdbc.util;
import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties;
/** * 实现对JDBC的封装 */ public class JdbcUtils { private static String driverName; private static String url; private static String username; private static String password;
static { Properties p = new Properties(); try { p.load(JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties")); driverName = p.getProperty("driverClass"); url = p.getProperty("url"); username = p.getProperty("username"); password = p.getProperty("password");
Class.forName(driverName);// 在JVM的内存中创建一个Driver对象
} catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } }
// 获取连接对象 public static Connection getConnection() { Connection cOnn= null; // 实现连接对象的创建 try { cOnn= DriverManager.getConnection(url, username, password); } catch (SQLException e) { e.printStackTrace(); } return conn; }
// 关闭操作 public static void closeRs(ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } }
public static void closeStmt(Statement stmt) { try { if (stmt != null) { stmt.close(); } } catch (SQLException e) { e.printStackTrace(); } }
public static void closeConn(Connection conn) { try { if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } }
public static void closeAll(ResultSet rs, Statement stmt, Connection conn) { closeRs(rs); closeStmt(stmt); closeConn(conn); } }