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

文章目录

  • JAVA JDBC连接MySQL数据库
    • JDBC使用
      • 1、通过反射加载驱动
      • 2.建立连接
      • 3.创建执行器 用了执行sql语句
        • createStatement()
        • prepareStatement()
      • 4.执行sql语句
      • 5.获取结果
      • 6.关闭
    • JDBC查询全体学生信息
    • JDBC 添加学生信息
    • JDBC 删除学生信息
    • JDBC 修改学生信息
  • JDBC 用户登录
    • JDBC用户登录1
    • JDBC用户登录2
  • MySQLUtil 工具类
      • JDBCUtilTest

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";static String USERNAME="root";static String PASSWORD="123456";static Connection connection = null;static PreparedStatement ps = null;static ResultSet rs = null;static {try {Class.forName(DRIVER);} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConn() {try {connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);} catch (SQLException e) {e.printStackTrace();}return connection;}public static PreparedStatement getPs(String sql){try {ps = connection.prepareStatement(sql);} catch (SQLException e) {e.printStackTrace();}return ps;}//查public static ResultSet getRs(){try {rs = ps.executeQuery();} catch (SQLException e) {e.printStackTrace();}return rs;}//增删改public static int getInsert(){int i = 0;try {i = ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}return i;}public static void close(){if (rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}if (ps!=null){try {ps.close();} catch (SQLException e) {e.printStackTrace();}if (connection!=null){try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}}}
}

使用该方法,以后想更改服务器,更改数据库,地址变了没关系,直接修改一下即可

JDBCUtilTest

import mysql.util.MysqUtil;import java.sql.PreparedStatement;public class JdbcUtilTest {public static void main(String[] args) {MysqUtil.getConn();String sql = "insert into student(id,name,age,sex,clazz,job,gongzi) values(20221445,'test',23,'nan','14','扫厕所','3k')";PreparedStatement ps = MysqUtil.getPs(sql);int insert = MysqUtil.getInsert();if (insert>0){System.out.println("运行成功,影响行数" + insert);}else {System.out.println("运行失败,影响行数" + insert);}MysqUtil.close();}
}
运行结果:运行成功,影响行数1

在这里插入图片描述


                                                🆗到底啦给靓仔一个关注吧!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部