Java JDBC连接MySQL数据库,基础语法及自定义JDBC的MySQL工具类

Posted liangzai2048

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java JDBC连接MySQL数据库,基础语法及自定义JDBC的MySQL工具类相关的知识,希望对你有一定的参考价值。

JAVA JDBC连接mysql数据库

JDBC使用

1、通过反射加载驱动

Class.forName("com.mysql.jdbc.Driver");

2.建立连接

        Connection connection = DriverManager.getConnection(
                "jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8",
                "root",
                "123456"
        );

3.创建执行器 用了执行sql语句

createStatement()

prepareStatement()

Statement statement = connection.createStatement();
        String sql = "select * from student";

4.执行sql语句

ResultSet rs = statement.executeQuery(sql);

5.获取结果

        while (rs.next())
            System.out.print(rs.getInt("id") + "\\t");
            System.out.print(rs.getString("name") + "\\t");
            System.out.print(rs.getInt("age") + "\\t");
            System.out.print(rs.getString("sex") + "\\t");
            System.out.print(rs.getString("clazz") + "\\t");
            System.out.print(rs.getString("job") + "\\t");
            System.out.print(rs.getString("gongzi") + "\\t\\n");
        

6.关闭

        rs.close();
        statement.close();
        connection.close();

JDBC查询全体学生信息

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

public class mysqlSelectDemo02 
    public static void main(String[] args) throws Exception
        //jdbc使用
        //1.通过反射加载 加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.建立连接
        Connection connection = DriverManager.getConnection(
                "jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8",
                "root",
                "123456"
        );
        //3.创建执行器 用来执行SQL语句
        //3.1 createStatement()
        //3.2 prepareStatement()
        Statement statement = connection.createStatement();
        String sql = "select * from student";
        //4.执行sql语句
        ResultSet rs = statement.executeQuery(sql);
        //5.获取结果
        while (rs.next())
            System.out.print(rs.getInt("id") + "\\t");
            System.out.print(rs.getString("name") + "\\t");
            System.out.print(rs.getInt("age") + "\\t");
            System.out.print(rs.getString("sex") + "\\t");
            System.out.print(rs.getString("clazz") + "\\t");
            System.out.print(rs.getString("job") + "\\t");
            System.out.print(rs.getString("gongzi") + "\\t\\n");
        
        //6.关闭
        rs.close();
        statement.close();
        connection.close();
    

运行结果:

20221401	刘生发	25	男	14	没有工作	17k	
20221402	胡杰靓	24	男	14	大数据工程师	18k	
20221403	朱佳乐	23	男	14	没有工作	17k	
20221404	张咪 	23	女	14	没有工作	17k	
20221405	杨旭	22	男	14	码农	15k	
20221406	陶华根	22	男	14	码农	15k	
20221407	潘磊	22	男	14	码农	14k	
20221408	王友虎	24	男	14	大数据高级开发工程师	20k	
20221409	覃笑	26	男	14	大数据架构师	50k	
20221410	潘磊	22	男	14	码农	14k	
20221411	王友虎	24	男	14	大数据高级开发工程师	20k	
20221412	覃笑	26	男	14	大数据架构师	50k	
20221413	潘磊	22	男	14	码农	14k	
20221414	王友虎	24	男	14	大数据高级开发工程师	20k	
20221415	覃笑	26	男	14	大数据架构师	50k	
20221416	潘磊	22	男	14	码农	14k	
20221417	王友虎	24	男	14	大数据高级开发工程师	20k	
20221418	覃笑	26	男	14	大数据架构师	50k	
20221419	王友虎	24	男	14	大数据高级开发工程师	20k	
20221420	覃笑	26	男	14	大数据架构师	50k	
20221421	覃笑	26	男	14	大数据高级开发工程师	20k	
20221422	王友虎	24	男	14	大数据高级开发工程师	20k	
20221423	覃笑	26	男	14	大数据架构师	50k	
20221424	覃笑	26	男	14	大数据高级开发工程师	20k	
20221425	王友虎	24	男	14	大数据高级开发工程师	20k	
20221426	覃笑	26	男	14	大数据架构师	50k	
20221427	覃笑	26	男	14	大数据高级开发工程师	20k	
20221428	王友虎	24	男	14	大数据高级开发工程师	20k	
20221429	覃笑	26	男	14	大数据架构师	50k	
20221430	覃笑	26	男	14	大数据高级开发工程师	20k	
20221431	李静	25	女	14	没有工作	17k	
20221432	奥特曼	25	男	14	打怪兽 	15k	
20221433	杨金杨	25	男	14	码农	15k	
20221434	杨金杨	25	男	14	打怪兽	15k	
20221435	杨金杨	25	男	14	打豆豆	15k	
20221436	杨金杨	25	男	14	打怪兽	15k	
20221437	李静 	25	女	14	打豆豆	20k	
20221438	覃笑	26	男	14	招生	25k	
20221439	李静	27	男	14	搞钱	28k	
20221440	张志凯	26	男	14	铠甲勇士	10k	
20221441	靓仔	24	男	14	大数据高级开发工程师	20k	

JDBC 添加学生信息

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

public class mysqlInsert 
    public static void main(String[] args) throws Exception
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的id:");
        int id = scanner.nextInt();
        System.out.println("请输入您的姓名:");
        String name = scanner.next();
        System.out.println("请输入您的年龄:");
        int age = scanner.nextInt();
        System.out.println("请输入您的性别:");
        String sex = scanner.next();
        System.out.println("请输入您的班级:");
        String clazz = scanner.next();
        System.out.println("请输入您想要的工作:");
        String job = scanner.next();
        System.out.println("请输入您想要的薪资:");
        String gongzi = scanner.next();
        
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection = DriverManager.getConnection(
                "jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8",
                "root",
                "123456"
        );
        
        Statement statement = connection.createStatement();
        String sql = "insert into student(id,name,age,sex,clazz,job,gongzi) values("+id+",'"+name+"',"+age+",'"+sex+"','"+clazz+"','"+job+"','"+gongzi+"')";
        
        int i = statement.executeUpdate(sql);
        if (i==i)
            System.out.println("注册成功,影响行数:" + i);
        else 
            System.out.println("注册失败");
        
        
        statement.close();
        connection.close();
        
    


运行结果:

请输入您的id:
20221443
请输入您的姓名:
test
请输入您的年龄:
23
请输入您的性别:
女
请输入您的班级:
14
请输入您想要的工作:
划水
请输入您想要的薪资:
50k
注册成功,影响行数:1

JDBC 删除学生信息

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

public class mysqlDelete 
    public static void main(String[] args) throws Exception
    
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection = DriverManager.getConnection(
                "jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8",
                "root",
                "123456"
        );
        
        Statement statement = connection.createStatement();
        String sql = "delete from student where name = 'test'";
        
        int i = statement.executeUpdate(sql);
        if (i>0)
            System.out.println("执行成功,影响行数:" + i);
        else 
            System.out.println("执行失败,影响行数:" + i);
        
        
        statement.close();
        connection.close();
        
    

运行结果:

执行成功,影响行数:1

JDBC 修改学生信息

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

public class mysqlUpdate 
    public static void main(String[] args) throws Exception
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection = DriverManager.getConnection(
                "jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8",
                "root",
                "123456"
        );
        Statement statement = connection.createStatement();
        String sql = "update student set age = 80 where name = 'test'";
        int i = statement.executeUpdate(sql);
        if (i>0)
            System.out.println("执行成功,影响行数:" + i);
        else 
            System.out.println("执行失败,影响行数:" + i);
        
        statement.close();
        connection.close();
    


运行结果:

执行成功,影响行数:1

JDBC 用户登录

JDBC用户登录1

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;

public class login01 
    public static void main(String[] args) throws Exception
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户:");
        String username = scanner.next();
        System.out.println("请输入密码:");
        String password = scanner.next();
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection = DriverManager.getConnection(
                "jdbc:mysql://master:3306/shujia",
                "root",
                "123456");
        Statement statement = connection.createStatement();
        //1.通过username去mysql中查找有没有这一条记录(存在:输入密码,不存在:就报错了)
        //2.存在之后 用查到的密码匹配输入的密码
        String sql = "select * from user where username='"+username+"'";
        ResultSet rs = statement.executeQuery(sql);
        if (!rs.next())
            System.out.println("用户输入错误");
            //结束
        
        //匹配密码
        String password1 = rs.getString("password");
        if (password==null || !password.equals(password1))
            System.out.println("密码不匹配");
        
        System.out.println("登录成功");
        rs.close();
        statement.close();
        connection.close();
    


运行结果1:

请输入用户:
123
请输入密码:
456
用户输入错误

运行结果2:

请输入用户:
123
请输入密码:
456
用户输入错误

运行结果3:

请输入用户:
root
请输入密码:
123456
登录成功

但是这种方法通过SQL注入 123’ or '1=1 是可以登录进去的(不安全)

JDBC用户登录2

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

public class login02 
    public static void main(String[] args) throws Exception
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户:");
        String username = scanner.next();
        System.out.println("请输入密码:");
        String password = scanner.next();
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection = DriverManager.getConnection(
                "jdbc:mysql://master:3306/shujia",
                "root",
                "123456"
        );
        String sql = "select * from user where username=?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,username);
        ResultSet rs = statement.executeQuery();
        if (!rs.next())
            System.out.println("用户输入错误");
        
        //匹配密码
        String password1 = rs.getString("password");
        if (password==null || !password.equals(password1))
            System.out.println("密码不匹配");
        
        System.out.println("登录成功");
        rs.close();
        statement.close();
        connection.close();
    

这种方式是安全的,以后开发都是使用该方法


MySQLUtil 工具类

如果说项目多了,每次都要启动JDBC的驱动,太啰嗦了为了减少工作量,我们自己定义一个MySQL JDBC工具类

import java.sql.*;

public class MysqUtil 
    static String DRIVER="com.mysql.jdbc.Driver";
    static String URL="jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8";
    <

以上是关于Java JDBC连接MySQL数据库,基础语法及自定义JDBC的MySQL工具类的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 数据库JDBC 编程之 Java 连接 MySQL

jsp页面中怎么导入jdbc连接mysql

JDBC连接MySQL数据库基础

JDBC连接MySQL数据库基础

Java应用程序连接数据库--JDBC基础

Java基础102 完整的JDBC连接MySQL数据库和Oracle数据库的方法