Java与MySQL的简单通过jdbc的链接以及简单的操作

39 篇文章 2 订阅
6 篇文章 0 订阅

1.JDBC概述

Sun公司制定一套规则。通过java代码连接咱们数据库(mysql,oracle,SQLServer,DB2)的规范。而且要求数据库的厂商去解决连接和操作问题!!!

如果把sun公司比作一台电脑,然后电脑给你预留接口。这些数据库厂商就好比u盘。

如果电脑想要用鼠标功能,买个鼠标通过接口插到电脑上面,让电脑具有鼠标的功能。

sun公司制定的java代码,要符合市面上所有的数据库厂商。厂商不一样。sun公司说了。你想使用java代码去连接SQLServer(微软),sun公司对微软说,哥们,你得给我封装一些类库,让我直接调用。如果你不封装,我就不用你的了!!!

JDK中有两个包:

java.sql

javax.sql

如果想要连接数据库,必须要下载第三方的jar包。

sun公司给咱们封装一写类库,但是厂商需要自己封装一些类库,那这些类库是厂商的,被称为第三方的类库,不是java自己带的!!!

真正用的时候,需要导入第三方的jar包,在开发中。

要连接mysql数据库,需要下载一个jar包,mysql-connector-java-5.1.47.jar

如何下载第三方的jar:

最快的方法就是去maven去下载。

1.百度输入maven

2.打开网站https://mvnrepository.com/

3.输入mysql进入查询

4.选择要的版本进行下载(我这里使用的是5.1.47版本的,java开发工具使用的idea2019版本的)

2.mysql连接数据库的参数

假如咱们要在控制台链接数据库:

cmd> mysql -hlocalhost -uroot -p1234

1. 需要确定连接哪一款数据库 mysql

2.hlocalhost 确定连接数据库在哪个服务器上面 本机localhost

3.数据库的用户名 root

4.数据库的密码 1234

java代码连接数据库的时候也是需要这几个参数的!!!

JDBC的URL=协议名+子协议名+数据源名。
a 协议名总是“jdbc”。
b 子协议名由JDBC驱动程序的编写者决定。
c 数据源名也可能包含用户与口令等信息;这些信息也可单独提供。
几种常见的数据库连接


-------------------------------oracle------------------
驱动:oracle.jdbc.driver.OracleDriver
URL:jdbc:oracle:thin:@machine_name:port:dbname
注:machine_name:数据库所在的机器的名称;
     port:端口号,默认是1521

-------------------------------mysql-------------------
驱动:com.mysql.jdbc.Driver
URL:jdbc:mysql://machine_name:port/dbname
注:machine_name:数据库所在的机器的名称;
     port:端口号,默认3306    

---------------------------SQL Server(微软)------------------
驱动:com.microsoft.jdbc.sqlserver.SQLServerDriver
URL:jdbc:microsoft:sqlserver://<machine_name><:port>;DatabaseName=<dbname>
注:machine_name:数据库所在的机器的名称;
     port:端口号,默认是1433

--------------------------DB2 (IBM)--------------------------
驱动:com.ibm.db2.jdbc.app.DB2Driver
URL:jdbc:db2://<machine_name><:port>/dbname
注:machine_name:数据库所在的机器的名称;
     port:端口号,默认是5000
-------------------------------------------------------

3.借助JDBC连接mysql数据库的入门案例

在项目中如何导包

1.在src的文件夹下面新建一个lib文件夹

2.将jar包复制到lib文件夹中

3.点击上jar包右键,add as library

import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
public class Demo1 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.准备url
        
        //useSSL 要么是true要么是false
        //你自己电脑的系统我不知有这个ssl协议的!!!
        //如果报一个错: javax.net.ssl.SSLHandshakeException:
        //true和false看自己情况来定的!!!!
        String url = "jdbc:mysql://localhost:3306/java2109?useSSL=false";
        //3.准备用户名和密码
        String user = "root";
        String password = "1234";
        //4.借助于一个java里面的类DriverManager 获取数据库连接对象
        Connection connection = DriverManager.getConnection(url, user, password);
        //
        System.out.println(connection);
        connection.close();
    }
​
}

最后记着关闭,因为不会自动释放资源,如果不手动关闭的话会一直占用系统资源!!!
 

4.增删改操作

首先咱们可以先创一个数据库,随便插入几条数据

 我这里给获取数据库连接的类对象封装了一下,方便之后调用

import java.sql.*;

public class JavaUtils {
        //javaqwz是我的数据库名字
        private static String url = "jdbc:mysql://localhost:3306/javaqwz?useSSL=false";
        //user 是我的mysql用户
        private static String user = "root";
        //1234是我的密码
        private static String password = "1234";
        static {
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
        public static Connection getConnection () throws SQLException {
            //获取数据库加载类对象
            Connection connection = DriverManager.getConnection(url,user,password);

            return  connection;
        }
        public static void close (Connection connection) {
            close(connection,null,null);
        }
        public static void close (Connection connection, Statement statement){
            close(connection,statement,null);
        }
        public static void close (Connection connection, Statement statement, ResultSet resultSet){
            if (connection == null){
                System.out.println("connection为空");
            }
            if (statement == null){
                System.out.println("statement为空");
            }
            if (resultSet == null){
                System.out.println("resultSet为空");
            }
        }
}

​这是在测试类里面写了增删改的方法,目前来说就先搞定静态的sql语句就ok,就是sql语句在Java代码里写好的,不会随着传值改变的

import java.sql.SQLException;

public class UrilTest2 {
    public static void main(String[] args) throws SQLException {
        add();//调用插入的静态方法
        delete();//调用删除的静态方法
        update();//调用修改的静态方法
    }
    public static void add() throws SQLException {
        String sql = "insert into test1 values (9,'菠萝酱',79)";//写插入的sql语言
        int i = JavaUtils.getConnection().createStatement().executeUpdate(sql);
        System.out.println("插入数据成功,共"+i+"行受到影响");
    }
    public static void delete() throws SQLException {
        String sql ="delete from test1 where id=1";
        int i = JavaUtils.getConnection().createStatement().executeUpdate(sql);
        System.out.println("删除数据成功,共"+i+"行受到影响");
    }
    public static void update() throws SQLException {
        String sql ="update test1 set age=99 where id=2";
        int i = JavaUtils.getConnection().createStatement().executeUpdate(sql);
        System.out.println("修改数据成功,共"+i+"行受到影响");
    }
}

接着咱们运行一下,看看数据库有什么变化

下图为操作之前的数据库

下图为操作之后的数据库

可以看到新增加了id为9的数据、删除了id为1的数据、修改了id为2的age数据

接下来大家看一下查询的

为了方便给大家显示出结果,我新建了一个Person类,里面的属性就是id、name、age

public class Person {
    private int id;
    private String name;
    private int age;

    public Person(){}

    public Person(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

接着就是操作数据库了

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class UtilTest {
    public static void main(String[] args) throws SQLException {
        Connection connection = JavaUtils.getConnection();//获取connection对象
        Statement statement = connection.createStatement();//获取statement搬运工对象
        ResultSet resultSet = statement.executeQuery("select * from test1");//调用executeQuery方法,返回值为一个resultSet对象
        ArrayList<Person> list = new ArrayList<>();//新建一个集合用来存储对象
        while (resultSet.next()) {//resultSet的next方法是将光标从当前位置向前移动一行。 ResultSet光标最初位于第一行之前; 第一次调用方法next使第一行成为当前行; 第二个调用使第二行成为当前行,依此类推。返回值为布尔类型,如果有数据的话就为true 反之为false
            int id = resultSet.getInt("id");//获取id列的int类型数据
            String name = resultSet.getString("name");//获取name列的String类型(varchar)的数据
            int age = resultSet.getInt("age");//获取age列的int类型的数据
            list.add(new Person(id, name, age));//将值付给新对象加到集合中存储
        }
        for (Person person : list) {//增强for循环遍历打印
            System.out.println(person);
        }
        JavaUtils.close(connection, statement, resultSet);//最后记者关闭

    }
}

结果如下:

如有不足之处,还望指正,如有不了解之处也可以留言,我会及时回复的!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇智波波奶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值