JavaWeb_JDBC概述及连接数据库

JDBC概述

概述

  • JDBC:java database connection,使用java语言连接数据库
  • 是java内部提供一套操作数据库的接口(标准),实现对象数据库的统一访问

功能

  • 一个java应用程序和数据库交互的桥梁
  • one write,run anywhere的思想。

组成

  • DriverManager类:驱动管理器,用户注册驱动,获取连接对象
  • Connection接口:数据库的连接对象
  • Statement接口:执行SQL语句,操作数据
  • PreparedStatement接口:执行SQL语句,操作数据
  • ResultSet接口:结果集(一张虚拟的表)

通过JDBC实现CURD操作

准备

<1> 创建表

    create table student(
        sid int primary key auto_increment,
        sname varchar(32) not null,
        age int,
        hobby varchar(32),
        shows varchar(32)
    );

<2>创建实体类

public class Student {
 	private int sid;
 	private String sname;
 	private int age;
 	private String hobby;
 	private String shows;
 	public Student() {
  		super();
 	}
 	public Student(int sid, String sname, int age, String hobby, String shows) {
  		super();
  		this.sid = sid;
  		this.sname = sname;
  		this.age = age;
  		this.hobby = hobby;
  		this.shows = shows;
 	}
 	.....get/set方法

<3> 引入数据库厂商提供的驱动 (.jar文件的方式)将文件引入到 WebContent 下 WEB-INF 下 lib 中

/WebContent/WEB-INF/lib/mysql-connector-java-8.0.18.jar

<4> 编码

    使用JDBC访问数据库的步骤:
        1. 加载数据库的驱动
        2. 获取数据库的连接对象
        3. 编写SQL语句
        4. 获取Statement对象,执行sql语句
        5. 处理结果集
        6. 释放资源

DriverManager 介绍

  • 作用:注册数据库驱动
  • 获取数据库连接对象
注册数据库驱动
1. 注册数据库驱动:方式一
    DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    
2. 方式二
    Class.forName("驱动类全称:包名+类名");
    
    推荐使用方式二来注册数据库驱动程序,扩展和灵活性更强,一步到位
获取数据库连接对象(前两者都可以使用)
Connection getConnection(url, user, password);
    参数一:URL,统一资源定位符,标识网络上的一个具体的资源(网页,一张照片,一个视频等等)
            协议+ip地址+端口+资源名称
            jdbc:mysql://   127.0.0.1 : 3306 /test
    第二个参数: 用户名
    第三个参数: 密码   

Connection getConnection(String path);
    url+username+password
    例如: jdbc:mysql://127.0.0.1:3306/test?user=root&password=root
    注意:用户名和密码传输的key是固定的

Connection getConnection(url, properties)
    参数二:属性对象
        Properties p = new Properties();
        p.setProperty("user","root");
        p.setProperty("password","root");
Connection 介绍

作用:数据库的连接对象,控制事务的实施

  1. void setAutoCommit(boolean autoCommit); 设置事务的提交方式 默认 true 自动提交
  2. void commit(); 提交事务
  3. void rollback(); 回滚操作
ResultSet介绍

作用:封装了查询的结果数据,内部含有一个游标,默认执行数据前。
方法:

  • boolean next() ,将指向数据的游标下移,返回有没有数据的标记
  • Object getObject(int ColIndex)
  • Object getObject(String ColName);//推荐使用
public class JDBCDemo {
   public static void main(String[] args) {
      Connection conn = null;
      Statement st = null;
      ResultSet rs = null;
      try {
          // 1. 加载驱动
          Class.forName("com.mysql.cj.jdbc.Driver");
         // 2. 获取数据库链接对象 ?serverTimezone=UTC&characterEncoding=utf-8
         conn = DriverManager.getConnection(
     "jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&characterEncoding=utf-8", "root", "root");
       // 测试是否链接成功
       System.out.println(conn);
       // 3. 获取执行sql语句的对象
       st = conn.createStatement();
       // 4. 执行语句
       String sql = "select * from student";
       rs = st.executeQuery(sql); // 执行查询语句 返回resultset结果集
       // 5. 遍历结果集
       while (rs.next()) {
	   int sid = rs.getInt("sid");
           int age = rs.getInt("age");
           String sname = rs.getString("sname");
           String hobby = rs.getString("hobby");
           String shows = rs.getString("shows");
           System.out.println(sid + " " + sname + " " + age +"  "+ hobby +"   "+ shows);
       }
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   try {
    // 6. 释放资源
    if (conn != null) {
     conn.close();
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
   if (st != null) {
    try {
     st.close();
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   if (rs != null) {
    try {
     rs.close();
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
  }
 }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值