JDBC(初识)

JDBC(初识)

jdbc简介

JDBC:Java Database Connectivity(java数据库连接),主要由接口组成。

JDBC 是一个接口,其中有一套为了简化、统一对数据库操作的,java操作数据库的规范。可以通过jdbc加载具体的驱动,从而操作数据库。

jdbc程序的编写

jdbc简单来说就是关联数据库和java得到纽带

  1. 搭建实验环境,建立数据库,并在其中建立数据表;

    create database jdbcStudy character set utf8 collate utf8_general_ci;
    use jdbcStudy;
    create table student(
        id int primary key,
        name varchar(40),
        password varchar(40),
        email varchar(60),
        birthday date);
    insert into student
    (id,name,password,email,birthday)
    values
    (1,'zhansan','123456','zs@sina.com','1980-12-04');
    insert into student
    (id,name,password,email,birthday)
    values
    (2,'lisi','123456','lisi@sina.com','1981-12-04');
    insert into student
    (id,name,password,email,birthday)
    values
    (3,'wangwu','123456','wangwu@sina.com','1979-12-04')
    
  2. 新建java工程,并导入数据库;

  3. 新建一个database.properties配置文件存放数据库相关信息;

    jdbc:mysql://localhost:3306/school
    协议:子协议://主机:端口/数据库
    
    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/school
    user=root
    password=123456
    
  4. 编写程序从数据表中,读取数据;(友情提示一定要导包!!!!!)

    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.*;
    import java.util.Properties;
    
    public class asd {
        private static String driver=null;
        private static String url=null;
        private static String user=null;
        private static String password=null;
        public static void main(String[] args) throws SQLException {
            inp();
        }
        private static void inp() throws SQLException {
            try {
                InputStream ras = asd.class.getClassLoader().getResourceAsStream("ghjkl.properties");
                Properties pro = new Properties();
                pro.load(ras);
                driver=pro.getProperty("driver");
                url=pro.getProperty("url");
                user= pro.getProperty("user");
                password= pro.getProperty("password");
                Class.forName(driver);
            } catch (IOException e) {
                e.printStackTrace();
        } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            Connection con = DriverManager.getConnection(url, user, password);
            Statement sta = con.createStatement();
            ResultSet res = sta.executeQuery( "select id,name,email,birthday from student");
            while (res.next()){
                System.out.println(res.getObject("id"));
                System.out.println(res.getObject("name"));
                System.out.println(res.getObject("email"));
                System.out.println(res.getObject("birthday"));
            }
            res.close();
            sta.close();
            con.close();
        }
    }
    

DeiverManager类

  1. DriverManager在jdbc中用于加载驱动,并创与数据库的链接;

  2. 使用方法:

    DriverManager.registerDriver(new Driver())

    DriverManager.getConnection(url, user, password)

  3. 由于采用registerDriver加载驱动会出现很多问题,所以实际我们并不推荐使用此方法加载驱动,而是使用Properties pro = new Properties();driver=pro.getProperty(“driver”);Class.forName(driver);(采用此种方式不会导致驱动对象在内存中重复出现,并且采用此种方式,程序仅仅只需要一个字符串,不需要依赖具体的驱动,使程序的灵活性更高)。

Connection类

  1. Connection类在jdbc中代表数据库的链接,Connection是数据库编程过程中的一个重要对象,客户端与数据库交互都是通过Connection对象完成的;
  2. Connection对象的常用方法:
    1. createStatement():创建向数据库发送sql的statement对象。
    2. prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
    3. prepareCall(sql):创建执行存储过程的callableStatement对象。
    4. setAutoCommit(boolean autoCommit):设置事务是否自动提交。
    5. commit() :在链接上提交事务。
    6. rollback() :在此链接上回滚事务。

Statement类

  1. Statement对象在jdbc中用于向数据库发送SQL语句,从而实现java操作数据库的目的;
  2. Statement对象常用方法:
    1. executeQuery(String sql) :用于向数据发送查询语句。
    2. executeUpdate(String sql):用于向数据库发送insert、update或delete语句
    3. execute(String sql):用于向数据库发送任意sql语句
    4. addBatch(String sql) :把多条sql语句放到一个批处理中。
    5. executeBatch():向数据库发送一批sql语句执行。

ResultSet类

  1. Jdbc程序中的ResultSet用于代表Sql语句的执行结果;

  2. Resultset封装执行结果时,采用的类似于表格的方式。ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前,调用ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。

  3. ResultSet既然用于封装执行结果的,所以该对象提供的都是用于获取数据的get方法:

    1. 获取任意类型的数据

      getObject(int index)

      getObject(string columnName)

    2. 获取指定类型的数据,例如:

      getString(int index)

      getString(String columnName)

  4. ResultSet还提供了对结果集进行滚动的方法:

    1. next():移动到下一行;
    2. Previous():移动到前一行;
    3. absolute(int row):移动到指定行;
    4. beforeFirst():移动resultSet的最前面;
    5. afterLast() :移动到resultSet的最后面。

释放资源

  1. 在jdbc运行完成后切记释放资源。程序在运行过程中,创建的那些与数据库进行交互的对象(通常是ResultSet, Statement和Connection对象),尤其是Connection对象,它用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统问题。Connection的使用原则是尽量晚创建,尽量早的释放。
  2. 为确保资源释放代码能运行,资源释放代码也尽量要放在finally语句中,保证执行。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值