jdbc_mysql(一)快速入门

8 篇文章 0 订阅

一、概念
JDBC:Java Database Connectivity
是什么:定义了操作所有关系型数据库(oracle、mysql)的规则(接口)。就是接口
数据库驱动:各个数据库厂商提供了JDBC的实现类jar包,通过jar包中类操作数据库。
二、步骤
1.下载驱动jar包,导入到项目中。
1)下载驱动
https://dev.mysql.com/downloads/
https://dev.mysql.com/downloads/connector/j/5.1.html
在这里插入图片描述
在这里插入图片描述

2)要导入的jar包名称【mysql-connector-java-5.1.49-bin.jar】
3)新建java项目project—module—package—class
4)在module上新建directory。
在这里插入图片描述
5)导入驱动jar包
(1)将jar包黏贴到步骤4)新建的文件夹中。
(2)在文件夹上右键【add as library】
在这里插入图片描述
2.注册驱动
3.获取数据库的连接对象Connection
4.定义sql(把sql发送给数据库操作数据库)
5.获取执行sql语句的对象 Statement
6.执行sql,接受返回结果
7.处理结果
8.释放资源

1.没有处理异常的
package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class jdbcDemo2 {
    public static void main(String[] args) throws Exception {
        //1.导入java.sql包,是面向接口的编程。所以要先指定mysql实现类
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取数据库连接,存放在Connection中
        Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.132.2:3306/mysql_test","mysql_test", "BJjbHSKFGESJrtpP");
        //3.定义sql语句
        String sql = "update book set author = 'ggg' where author = 'haha'";
        //4.可执行数据库的对象
        Statement stat = conn.createStatement();
        //5.执行sql语句
        int count = stat.executeUpdate(sql);
        //6.输出被影响行数
        System.out.println(count);
        //7.释放资源
        stat.close();
        conn.close();
    }
}

2.常用方法注释
package jdbc;

//驱动管理类
import java.sql.DriverManager;
//数据库连接类
import java.sql.Connection;
//执行sql对象
import java.sql.Statement;
//结果集对象
import java.sql.ResultSet;
//执行sql对象
import java.sql.PreparedStatement;

public class JdbcDemo1 {
    public static void main(String[] args) throws Exception {
        //1.导入驱动jar包
        //2.注册驱动
     /*
    一、DriverManager:驱动管理类
    功能:
         1)注册驱动方法:导入都是java.sql的接口,面向接口的编程。需要使用一个方法指定使用那个数据库的实现类
         方法:static void registerDriver(Driver driver)
         代码实现:Class.forName("com.mysql.jdbc.Driver");告诉程序,用的左侧目录树中libs_mysql-connector-java-5.1.49-bin.jar_com.mysql.jdbc.Driver
         打开com.mysql.jdbc.Driver,有一个静态代码块
         static {
            try {
                DriverManager.registerDriver(new Driver());
            } catch (SQLException var1) {
                throw new RuntimeException("Can't register driver!");
            }
        }
        注意:mysql5之后可以省略这个步骤(建议添加),因为在libs_mysql-connector-java-5.1.49-bin.jar_META-INF_services_java.sql.Driver中默认添加了驱动。
        2)获取数据库连接
        方法:static Connection	getConnection(String url, String user, String password)尝试建立与给定数据库URL的连接。
        代码实现: DriverManager.getConnection("jdbc:mysql://192.168.132.2:3306/mysql_test", "mysql_test", "BJjbHSKFGESJrtpP")
        参数:
            * url:连接不同数据库,语法不同,这里是mysql。jdbc:mysql://IP:端口/数据库名称
            * user:用户名
            * password:密码
     */
        Class.forName("com.mysql.jdbc.Driver");
        //3.获取数据库连接对象
        /*二、Connection:数据库连接接口
         功能
            1)获取执行sql的对象
            * Statement createStatement()创建一个 Statement对象,用于将SQL语句发送到数据库。
            * PreparedStatement	prepareStatement(String sql)创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。
            2)管理事务
            开启事务:void setAutoCommit(boolean autoCommit)将此连接的自动提交模式设置为给定状态。
            提交事务:void commit()使自上次提交/回滚以来所做的所有更改都将永久性,并释放此 Connection对象当前持有的任何数据库锁。
            回滚事务:void rollback()撤消在当前事务中所做的所有更改,并释放此 Connection对象当前持有的任何数据库锁。
         */
        Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.132.2:3306/mysql_test", "mysql_test", "BJjbHSKFGESJrtpP");
        //4.定义sql语句
        String sql = "update book set author = 'haha' where author = 'yjj' ";
        //5.获取执行sql的对象 Statement
        /*三、Statement:用于执行静态SQL语句并返回其生成的结果的对象。
        功能
         1)boolean	execute(String sql) 执行给定的所有SQL语句
         2)int	executeUpdate(String sql) 执行DML(INSERT,UPDATE,DELETE)返回影响行数,DDL(create,alter,drop)不返回结果。
         3)ResultSet executeQuery(String sql)执行给定的select语句,返回单个 ResultSet对象
         */
        Statement statement = conn.createStatement();
        //6.执行sql
        int count = statement.executeUpdate(sql);
        //7.处理结果
        System.out.println(count);
        //8.释放资源
        statement.close();
        conn.close();
    }
}
3.添加异常处理,executeUpdate
package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbcDemo4 {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stat = null;
        try {
            //1.指定实现类
            Class.forName("com.mysql.jdbc.Driver");
            //2.sql语句
            String sql = "update book set author = 'ggg' where author = 'haha'";
            //3.连接到数据库
            conn = DriverManager.getConnection("jdbc:mysql://192.168.132.2:3306/mysql_test", "mysql_test", "BJjbHSKFGESJrtpP");
            //4.获取执行sql的对象
            stat = conn.createStatement();
            //5.执行sql
            int count = stat.executeUpdate(sql);
            System.out.println(count);
            if(count>=0){
                System.out.println("执行成功");
            }else{
                System.out.println("执行失败");
            }
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            //不论之前是否异常,全部释放资源。避免内存溢出
            //当conn异常后,无法执行到stat,避免空指针异常,先判断下。
            if(stat != null){
                try {
                    stat.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

3.添加异常处理,executeQuery,遍历获取数据
package jdbc;

import java.sql.*;

public class JdbcDemo5 {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stat = null;
        ResultSet rs = null;
        try {
            //1.指定实现类
            Class.forName("com.mysql.jdbc.Driver");
            //2.sql语句
            String sql = "select * from book";
            //3.连接到数据库
            conn = DriverManager.getConnection("jdbc:mysql://192.168.132.2:3306/mysql_test", "mysql_test", "BJjbHSKFGESJrtpP");
            //4.获取执行sql的对象
            stat = conn.createStatement();
            //5.执行sql
            rs= stat.executeQuery(sql);
            //遍历获取数据
            /*
            ResultSet
            1.方法
            *boolean next() 游标向下移动一行,并判断当前行是否有数据,有返回true。(游标默认在第一行之前,第一次调用next()游标移动到第一行)
            *Xxx getXxx(列号或列名) 获取某一行某一列的值。Xxx代表数据类型,每一列的数据类型不同。列号从1开始。
            */
            while(rs.next()){
                String name = rs.getString(1);
                String author = rs.getString(2);
                System.out.println(name+","+author);
            }
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            //不论之前是否异常,全部释放资源。避免内存溢出
            //当conn异常后,无法执行到stat,避免空指针异常,先判断下。
            if(rs != null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(stat != null){
                try {
                    stat.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

4.将数据库查询结果存储到类中(返回结果类)
package book;

public class Book {
    private String name;
    private String author;

    public Book() {
    }

    public Book(String name, String author) {
        this.name = name;
        this.author = author;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

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

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}

4.将数据库查询结果存储到类中(数据库调用类)
package jdbc;

import book.Book;

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

public class JdbcBook {
    public static void main(String[] args) {
        List<Book> all = new JdbcBook().findAll();
        System.out.println(all);
        System.out.println(all.size());
        for (Book book : all) {
            System.out.println(book);
        }
    }
    //查询所有book对象,把数据库查询返回结果存储在对象中
     public List<Book> findAll(){
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        Book book = new Book();
        List<Book> books = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://192.168.132.2:3306/mysql_test", "mysql_test", "BJjbHSKFGESJrtpP");
            statement = connection.createStatement();
            String sql = "select * from book";
            resultSet = statement.executeQuery(sql);
            books = new ArrayList<>();
            while(resultSet.next()){
                String name = resultSet.getString(1);
                String author = resultSet.getString(2);
                book.setName(name);
                book.setAuthor(author);
                books.add(book);
                return books;
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if(resultSet != null){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(statement != null){
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(connection != null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return books;
        }

    }
}

从数据库中查询所有学生信息,将学生信息封装为学生对象,将学生对象放到List集合中

package com.example.jdbc.test;

import com.example.jdbc.domain.Student;

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

public class JDBCTest01 {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        List<Student> studentList = new ArrayList<>();
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取连接
            String url = "jdbc:mysql://localhost:3306/wkcto";
            String user = "root";
            String password = "admin123";
            conn = DriverManager.getConnection(url,user,password);
            //3.获取预编译的数据库操作对象
            String sql = "select id,name,birth from tbl_student";
            ps = conn.prepareStatement(sql);
            //4.执行sql
            rs = ps.executeQuery();
            while (rs.next()){
                //从结果集中取数据
                String id = rs.getString("id");
                String name = rs.getString("name");
                String birth = rs.getString("birth");
                //将以上零散的数据,封装成javabean
                Student student = new Student();
                student.setId(id);
                student.setName(name);
                student.setBirth(birth);
                //将javabean放到容器中
                studentList.add(student);
            }
            //5.处理查询结果集
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //6.释放资源
            if (rs != null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (ps != null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        //展示list集合数据
        for (Student s :studentList){
            System.out.println(s);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值