JDBC(简单入门)

JDBC

1.JDBC基本概念

概念:Java DataBase Connectivity Java 数据库连接 (Java语言操纵数据库)

Jdbc本质:Sun公司定义的一套操作所有关系型数据库的规则,即接口。

各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们使用接口编程,真正执行的代码

是驱动jar包中的实现类。

2.快速入门

步骤:

  1. 导入驱动jar包

  2. 注册驱动

  3. 获取数据库的连接对象 Connection

  4. 定义sql语句

  5. 获取执行sql语句的对象 Statement

  6. 执行sql,接收返回结果

    扫描二维码关注公众号,回复: 9107088 查看本文章
  7. 处理结果

  8. 释放资源

package cn.imut;

import java.sql.*;

//Jdbc快速入门
public class JdbcDemo1 {
   public static void main(String[] args) throws ClassNotFoundException, SQLException {

       //1.导入驱动jar包
       //2.注册驱动
       Class.forName("com.mysql.cj.jdbc.Driver");

       //3.获取数据库连接对象
       Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zl?useSSL=true&&serverTimezone=UTC", "root", "1870535196");

       //4.定义sql语句
       String sql = "select * from user";

       //5.获取执行sql的对象
       Statement statement = conn.createStatement();

       //6.执行sql
       ResultSet resultSet = statement.executeQuery(sql);

       //7.处理结果
       while (resultSet.next()) {
           System.out.println("id=" + resultSet.getObject("id"));
           System.out.println("username=" + resultSet.getObject("username"));
           System.out.println("password=" + resultSet.getObject("password"));
           System.out.println("name=" + resultSet.getObject("name"));
           System.out.println("==============================");
      }

       //8.释放资源
       statement.close();
       conn.close();
  }
}

3.jdbc中各个接口和类

  1. DriverManager:驱动管理对象

    功能:

    1. 注册驱动

    2. 获取数据库连接

  2. Connection:数据库连接对象

    功能:

    1. 获取执行sql的对象

    2. 管理事务

      • 开启事务 setAutoCommit(boolean autoCommit):参数false,开启事务

      • 提交事务 commit()

      • 回滚事务 rollback()

  3. Statement:执行sql对象

    功能:

    1. 执行sql

      1. Boolean execute (String sql); :可以执行任意的sql

      2. int executeUpdate (String sql); : 执行DML(i,u,d),DDL(c,a,d)语句

      3. ResultSet executeQuery(String sql); : 执行DQL(s)语句

    2. 联系:

      1. user表 添加一条记录

      2. 修改记录

      3. 删除记录

  4. ResultSet:结果集对象,封装查询结果

    boolean next():游标向下移动一行,判断当前行是否是最后一行末尾

    getxxx(参数):获取数据

    xxx:代表数据类型 如: int getInt(), String getString()

    参数:

    1.int:列编号

    2.String:列名称

    注意:

    使用步骤:

    1.游标向下移动一行

    2.判断是否有数据

    3.获取数据

    while (resultSet.next()) {
       System.out.println("id=" + resultSet.getObject("id"));
       System.out.println("username=" + resultSet.getObject("username"));
       System.out.println("password=" + resultSet.getObject("password"));
       System.out.println("name=" + resultSet.getObject("name"));
       System.out.println("==============================");
    }

练习:

将user表封装为对象,打印

User.java

package cn.imut.domain;

public class User {
   private int id;
   private String username;
   private String password;
   private String name;

   public User(int id, String username, String password, String name) {
       this.id = id;
       this.username = username;
       this.password = password;
       this.name = name;
  }

   public User() {

  }

   @Override
   public String toString() {
       return "User{" +
               "id=" + id +
               ", username='" + username + '\'' +
               ", password='" + password + '\'' +
               ", name='" + name + '\'' +
               '}';
  }

   public int getId() {
       return id;
  }

   public void setId(int id) {
       this.id = id;
  }

   public String getUsername() {
       return username;
  }

   public void setUsername(String username) {
       this.username = username;
  }

   public String getPassword() {
       return password;
  }

   public void setPassword(String password) {
       this.password = password;
  }

   public String getName() {
       return name;
  }

   public void setName(String name) {
       this.name = name;
  }
}

JdbcUser.java

package cn.imut.jdbc;

import cn.imut.domain.User;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class JdbcUser {

   public static void main(String[] args) {
       List<User> list = new JdbcUser().findAll();
       System.out.println(list);
  }
   public List<User> findAll() {

       Connection conn = null;
       Statement stmt = null;
       ResultSet rs = null;
       List<User> list = null;
       try {
           Class.forName("com.mysql.cj.jdbc.Driver");
           conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zl?useSSL=true&serverTimezone=UTC", "root", "1870535196");
           String sql = "select * from user";
           stmt = conn.createStatement();
           rs = stmt.executeQuery(sql);

           User user = null;
           list = new ArrayList<>();
           while (rs.next()){
               int id = rs.getInt("id");
               String username = rs.getString("username");
               String password = rs.getString("password");
               String name = rs.getString("name");

               user = new User();
               user.setId(id);
               user.setUsername(username);
               user.setPassword(password);
               user.setName(name);

               list.add(user);
          }
      } catch (ClassNotFoundException | SQLException e) {
           e.printStackTrace();
      } finally {
           if(conn != null){
               try {
                   conn.close();
              } catch (SQLException e) {
                   e.printStackTrace();
              }
          }
           if(conn != null){
               try {
                   conn.close();
              } catch (SQLException e) {
                   e.printStackTrace();
              }
          }
           if(rs != null){
               try {
                   rs.close();
              } catch (SQLException e) {
                   e.printStackTrace();
              }
          }
      }
       return list;
  }
}

抽取Jdbc工具类:JdbcUtils

package cn.imut.utils;

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

//Jdbc工具类
public class JdbcUtils {

   private static String driver;
   private static String url;
   private static String username;
   private static String password;

   static {

       try {
           //1.创建Properties集合类
           Properties pro = new Properties();
           //2.加载文件
           ClassLoader classLoader = JdbcUtils.class.getClassLoader();
           URL res = classLoader.getResource("jdbc.properties");

           String path = res.getPath();
           System.out.println(path);
           pro.load(new FileReader(path));
           //3.获取数据,赋值
           driver = pro.getProperty("driver");
           url = pro.getProperty("url");
           username = pro.getProperty("username");
           password = pro.getProperty("password");
           //4.注册驱动
           Class.forName(driver);
      } catch (IOException | ClassNotFoundException e) {
           e.printStackTrace();
      }
  }
   //获取连接对象
   public static Connection getConnection() throws SQLException {
       return DriverManager.getConnection(url,username,password);
  }

   //资源释放
   public static void close(Statement stmt, Connection conn) {
       if(stmt != null){
           try {
               stmt.close();
          } catch (SQLException e) {
               e.printStackTrace();
          }
      }
       if(conn != null){
           try {
               conn.close();
          } catch (SQLException e) {
               e.printStackTrace();
          }
      }
  }

   public static void close(Statement stmt, Connection conn, ResultSet rs) {
       if(stmt != null){
           try {
               stmt.close();
          } catch (SQLException e) {
               e.printStackTrace();
          }
      }
       if(conn != null){
           try {
               conn.close();
          } catch (SQLException e) {
               e.printStackTrace();
          }
      }
       if(rs != null){
           try {
               rs.close();
          } catch (SQLException e) {
               e.printStackTrace();
          }
      }
  }
}

 

猜你喜欢

转载自www.cnblogs.com/yfyyy/p/12300756.html
今日推荐