JDBC小结

it2025-01-09  35

JDBC 1.简介 JDBC : Java DateBase Connectivity     (1) Java程序用于连接数据库的一组接口规范      (2) 接口的具体实现由各个数据库厂商提供,简化了程序员在连接      不同数据库时所需要的编码。      (3) jdbc驱动:各个数据库厂商提供的具体实现类,用于取得与数据库的连接(mysql:connector.jar) 2.JDBC核心类      (1) DriverManager:用于获取连接数据库的Connection对象      (2) Connection:数据库连接对象,如果能成功获取,说明连接数据库成功      (3) Statement:用于执行sql语句,操作数据库,可以从Connection对象获取      (4) ResultSet:用于存储查询的结果集,提供了一系列获取查询结果的方法,通过Statement获取该对象      注意:只有执行查询语句才有结果集      增删改操作返回int状态值 3.核心步骤(mysql)      (1).导入jar包 : mysql-connector-java-5.1.13-bin.jar(connectorJ)(可以从mysql官网下载)      (2).获取Connection对象      四大参数:      [1] String driverClassName = "com.mysql.jdbc.Driver" --> 数据库连接驱动      [2] String url = "jdbc:mysql://localhost:3306/databaseName" --> 数据库所在的位置       注: jdbc:mysql是协议, localhost代表本地IP,3306代表端口号      (在url中可以追加数据库用户名和密码:?username:root&password:xxx)      [3] String username="xxxx"; 连接数据库的用户名      [4] String password="xxxx"; 用户密码      Class.forName(driverClassName) : 反射方式加载驱动类      Connection conn = DriverManager.getConnection(url,username,password) : 获取连接对象      (3).得到Statement对象      > Statement stmt = con.createStatement();      (4).执行sql语句      [1] 发送更新sql语句:int row = stmt.executeUpdate(String sql); --> 若执行增删改则到此结束      [2] 发送查询sql语句:ResultSet rs = stmt.executeQuery(String sql); --> 执行查询请参照(5)      (5).操作ResultSet获取数据:      注:       ResultSet内部原理简介:ResultSet在内部持有一个行指针(游标),默认指向第一行之前      因此在取出数据时要注意调用next()方法移动该指针使其指向下一行      while(rs.next()){      rs.getXxx(int colIndex); // 根据列标取得数据      rs.getXxx(String colName); // 根据列名取得数据(较为方便)      }      以下四种获取列元素的方法可供选择,根据实际需求灵活使用:      [1] int getInt(int i):获取第i列的数据,转换成int类型返回      [2] int getInt(String colName):rs.getString("ename"),获取当前行,名为ename的列数据      [3] String getString(int i):获取第i列的数据,转换成String类型返回      [4] Object getObject(int i):获取第i列的数据,转换成Object类型返回      (6).关闭资源      rs.close(); // 关闭结果集资源      stmt.close(); // 关闭Statement资源      conn.close(); // 断开连接      4.代码示例 /* JDBCUtils: 获取连接,关闭资源的工具类 */ package com.itheima.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCUtils { // 定义四个获取连接的必要参数,可以从配置文件获取,也可以自己给出 private static String driverClassName = "com.mysql.jdbc.Driver"; private static String url = "jdbc:mysql://localhost:3306/dbtest1"; private static String username = "root"; private static String password = "zhoubowen"; // 静态代码块用于加载连接驱动 static{ try { Class.forName(driverClassName); } catch (ClassNotFoundException e) { e.printStackTrace(); } } // 获取数据库连接 public static Connection getConnection() throws SQLException{ Connection conn = DriverManager.getConnection(url, username, password); return conn; } // 关闭资源 public static void closeAll(Connection conn, Statement stmt, ResultSet rs){ if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } /* 测试Demo */  package com.itheima.jdbc; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Demo { public static void main(String[] args) throws SQLException { // 获取连接: 关键 Connection conn = JDBCUtils.getConnection(); // 获取执行语句的Statement对象 Statement stmt = conn.createStatement(); // 获取查询结果集对象 ResultSet rs = stmt.executeQuery("select * from test"); // 获取数据 while(rs.next()){ String t_name = rs.getString("t_name"); String t_sex = rs.getString("t_sex"); System.out.println(t_name + ":" + t_sex); } // 关闭资源 JDBCUtils.closeAll(conn, stmt, rs); } }

转载于:https://www.cnblogs.com/jym-sunshine/p/4909809.html

相关资源:数据结构—成绩单生成器
最新回复(0)