使用JDBC连接数据库

    技术2026-08-18  12

    文章目录

    JDBCJDBC API纯java方式连接数据库1. 加载驱动2. 建立连接3. 执行sql语句3.1 Statement接口3.2 PreparedStatement接口 4. 处理返回结果4.1 ResultSet 获取行4.2 ResultSet 获取值 5. 关闭连接,释放资源

    JDBC

    JDBC 是Java数据库连接技术的简称,提供连接各种常用数据库的能力

    JDBC API

    DriverManager类

    依据数据库的不同,管理JDBC驱动

    Connection 接口

    负责连接数据库并担任传送数据的任务

    Statement 接口

    由Connection产生,负责执行SQL语句

    ResultSet 接口

    负责保存Statement执行后所产生的查询结果

    纯java方式连接数据库

    1. 加载驱动

    try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { … … }

    2. 建立连接

    Connection conn = DriverManager.getConnection(url,user,pass);

    Connection conn = null; String url = "jdbc:mysql://localhost:3306/epet"; String user = "epetadmin"; String password = "0000"; try { conn = DriverManager.getConnection(url,user,password); //省略代码 … … } catch (SQLException e) { … … }

    3. 执行sql语句

    3.1 Statement接口

    Statement stmt = conn.createStatement();

    Statement常用方法 返回值类型方法名方法说明ResultSetexecuteQuery( String sql )执行SQL查询,返回结果集intexecuteUpdate( String sql )执行SQL增删改,返回受影响行数booleanexecute( String sql)执行任意SQL,返回布尔值,表示是否有结果集返回 //示例代码 主人登录 Statement st = null; //获取用于向数据库发送sql语句的statement st = conn.createStatement(); //向数据库发sql String sql = "select * from master where name= '"+name+"' and password = '"+password+"' " ; st.executeQuery(sql);
    3.2 PreparedStatement接口

    ​ 继承Statement接口,预编译,避免SQL注入的隐患

    ​ 什么是SQL注入:

    String sql = "select * from master where name= '"+name+"' and password = '"+password+"' " ; //name = "张三" password = 12'or'1'='1 String sql = "select * from master where name= '张三' and password = '12'or'1'='1' " ; //永真式

    ​ PreparedStatement st = conn.preparedStatement();

    //示例代码 更新狗狗信息到数据库 Connection conn = null; PreparedStatement pstmt = null; //建立连接 … … //使用占位符的SQL语句 String sql="update dog set health=?,love=? where id=?"; //创建PreparedStatement对象 pstmt = conn.prepareStatement(sql); //设置每个输入参数的值 pstmt.setInt(1, 80); pstmt.setInt(2, 15); pstmt.setInt(3, 1); //执行SQL pstmt.executeUpdate(); //关闭连接 … …

    4. 处理返回结果

    4.1 ResultSet 获取行

    next():移动到下一行

    Previous():移动到前一行

    //判断是否有结果集 if(rs.next()){ ... } //遍历结果集获取数据 while(rs.next()){ ... }
    4.2 ResultSet 获取值
    获取任意类型的数据 : 列号(从1开始)或者列名 getObject(int index)

    ​ getObject(string columnName)

    System.out.println("id=" + rs.getObject(1)); System.out.println("name=" + rs.getObject("name")); 获取指定类型的数据: 列号(从1开始)或者列名 getString(int index)

    ​ getString(String columnName)

    int id = rs.getInt(1); String name = rs.getString("name");

    5. 关闭连接,释放资源

    按照先使用的后关闭原则 rs --> stmt --> conn if(rs!=null){ try{ rs.close(); }catch (Exception e) { e.printStackTrace(); } rs = null; } if(stmt!=null){ try{ stmt.close(); }catch (Exception e) { e.printStackTrace(); } } if(conn!=null){ try{ conn.close(); }catch (Exception e) { e.printStackTrace(); } }
    Processed: 0.013, SQL: 9