JDBC学习(一)---JDBC的概念/JDBC相关类/如何使用JDBC

JDBC学习(一)—JDBC的概念/JDBC相关类/如何使用JDBC

01 JDBC概念

JDBC:Java Data Base Connectivity,Java数据库连接

SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范(接口),称之为JDBC。

应用程序必须要通过相应的数据库驱动程序与数据库进行交互。

因此,开发人员想要操作数据,需要通过jdbc加载具体的驱动。


02 JDBC相关类

  • DriverManager类

    DriverManager用于加载驱动,并创建与数据库的链接。

    常用方法:

    • DriverManager.registerDriver(new Driver());在实际开发中并不推荐采用registerDriver方法注册驱动。此方式会导致驱动程序注册两次,在内存中会有两个Driver对象;程序依赖mysql的api,脱离mysql的jar包,程序将无法编译,将来程序切换底层数据库将会非常麻烦。推荐方式:Class.forName(“com.mysql.jdbc.Driver”);采用此种方式不会导致驱动对象在内存中重复出现,并且采用此种方式,程序仅仅只需要一个字符串,不需要依赖具体的驱动,使程序的灵活性更高。
    • DriverManager.getConnection(url, user, password);获取数据库连接
      • 注意url的书写格式:协议 :子协议 : //主机:端口 + 数据库 + 参数
      • 常用数据库URL地址的写法:
        • Oracle写法:jdbc:oracle:thin:@localhost:1521:数据表名称
        • SqlServer写法:jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=数据表名称
        • MySql写法:jdbc:mysql://localhost:3306/数据表名称,如果连接的是本地的Mysql数据库,并且连接使用的端口是3306,那么的url地址可以简写为: jdbc:mysql:///数据库

  • Connection类

    用于代表数据库的链接,客户端与数据库所有交互都是通过connection对象完成的.

    注意:Connection对象,是非常稀有的资源,用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统宕机

    常用方法:

    createStatement():创建向数据库发送sql的statement对象。
    prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
    prepareCall(sql):创建执行存储过程的callableStatement对象。
    setAutoCommit(boolean autoCommit):设置事务是否自动提交。
    commit() :在链接上提交事务。
    rollback() :在此链接上回滚事务。
    

  • Statement类

    用于向数据库发送SQL语句

    注意:该对象需要释放资源

    常用方法:

    executeQuery(String sql) :用于向数据发送查询语句。
    executeUpdate(String sql):用于向数据库发送insert、update或delete语句
    execute(String sql):用于向数据库发送任意sql语句
    addBatch(String sql) :把多条sql语句放到一个批处理中。
    executeBatch():向数据库发送一批sql语句执行。
    

  • ResultSet类

    用于封装Sql语句的执行结果。ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一
    行之前,调用ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方法获取该行
    的数据。可以理解为迭代器。

    注意:该对象需要释放资源

    常用方法:

    //滚动方法:
    next():移动到下一行
    Previous():移动到前一行
    absolute(int row):移动到指定行
    beforeFirst():移动resultSet的最前面。
    afterLast() :移动到resultSet的最后面。
    
    //可以通过get获取任意类型的数据,如 :
    getObject(int index)
    getObject(string columnName)
    getString(int index)
    getString(String columnName)
    

    示例:

     while (resultSet.next()){
    	     System.out.println(resultSet.getObject("columnName1"));
    	     System.out.println(resultSet.getObject("columnName2"));
    	     System.out.println(resultSet.getObject("columnName3"));
    	     System.out.println(resultSet.getObject("columnName4"));
    }
    

03 如何使用JDBC

  • 准备步骤

    • 下载驱动:通过下载地址https://mvnrepository.com/artifact/mysql/mysql-connector-java下载jar包

    • 导jar包,可以参考文章https://blog.csdn.net/yinyanyao1747/article/details/90751024详细步骤

    • 搭建实验环境

      • 在mysql中创建一个库,并创建数据表,插入数据。以下列数据库为例:
      create database jdbcStudy character set utf8 collate utf8_general_ci;
      
      use jdbcStudy;
      
      create table users(
          id int primary key,
          name varchar(40),
          password varchar(40),
          email varchar(60),
          birthday date
      );
      
      insert into users(id,name,password,email,birthday) values(1,'zhansan','123456','zs@sina.com','1980-12-04');
      insert into users(id,name,password,email,birthday) values(2,'lisi','123456','lisi@sina.com','1981-12-04');
      insert into users(id,name,password,email,birthday) values(3,'wangwu','123456','wangwu@sina.com','1979-12-04');
      
  • 使用JDBC

package com.hooi.demo1;

import java.sql.*;

public class JDBCTest {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {

     //step1:加载驱动
     
     Class.forName("com.mysql.jdbc.Driver");
     
     //step2:获取连接
     
     String username ="root";
     
     String passwd = "123456";
     
     String url ="jdbc:mysql://localhost:3306/jdbcstudy";
     
     Connection connection = DriverManager.getConnection(url, username, passwd);
     
     //step3:获取用于向数据库发送sql语句的statement对象
     
     Statement statement = connection.createStatement();
     
     //step4:用string包装sql语句
     
	 String sql ="select id,name,password,email FROM users";
	 
	 //step5:执行sql语句
	 
     ResultSet resultSet = statement.executeQuery(sql);

	//step6:获取执行结果
	
	 while (resultSet.next()){
	     System.out.println(resultSet.getObject("id"));
	     System.out.println(resultSet.getObject("name"));
	     System.out.println(resultSet.getObject("password"));
	     System.out.println(resultSet.getObject("email"));
	 }
	
	//step7:释放资源,关闭连接

     resultSet.close();
     statement.close();
     connection.close();

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值