zoukankan      html  css  js  c++  java
  • JDBC小结

    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);
    }
    }
  • 相关阅读:
    OAuth2.0系列之授权码模式实践教程(二)
    OAuth2.0系列之基本概念和运作流程(一)
    OAuth2.0系列之单点登录SSO实现
    Mybatis系列之设置自动提交事务
    springMVC系列之@Responsebody接口弹出f.txt下载问题
    Oracle应用之批量递增更新数据脚本
    前端 自定义弹出框-提示框(一)
    IE不兼容问题 字符串格式化
    JS 打开本地应用软件
    PPT导出为图片
  • 原文地址:https://www.cnblogs.com/jym-sunshine/p/4909809.html
Copyright © 2011-2022 走看看