0


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查询全体学生信息

importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;publicclass mysqlSelectDemo02 {publicstaticvoidmain(String[] args)throwsException{//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 添加学生信息

importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjava.util.Scanner;publicclass mysqlInsert {publicstaticvoidmain(String[] args)throwsException{Scanner scanner =newScanner(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 删除学生信息

importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;publicclass mysqlDelete {publicstaticvoidmain(String[] args)throwsException{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 修改学生信息

importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;publicclass mysqlUpdate {publicstaticvoidmain(String[] args)throwsException{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

importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;importjava.util.Scanner;publicclass login01 {publicstaticvoidmain(String[] args)throwsException{Scanner scanner =newScanner(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

importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.Scanner;publicclass login02 {publicstaticvoidmain(String[] args)throwsException{Scanner scanner =newScanner(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工具类

importjava.sql.*;publicclassMysqUtil{staticString DRIVER="com.mysql.jdbc.Driver";staticString URL="jdbc:mysql://master:3306/shujia?useUnicode=true&characterEncoding=utf8";staticString USERNAME="root";staticString PASSWORD="123456";staticConnection connection =null;staticPreparedStatement ps =null;staticResultSet rs =null;static{try{Class.forName(DRIVER);}catch(ClassNotFoundException e){
            e.printStackTrace();}}publicstaticConnectiongetConn(){try{
            connection =DriverManager.getConnection(URL, USERNAME, PASSWORD
            );}catch(SQLException e){
            e.printStackTrace();}return connection;}publicstaticPreparedStatementgetPs(String sql){try{
            ps = connection.prepareStatement(sql);}catch(SQLException e){
            e.printStackTrace();}return ps;}//查publicstaticResultSetgetRs(){try{
            rs = ps.executeQuery();}catch(SQLException e){
            e.printStackTrace();}return rs;}//增删改publicstaticintgetInsert(){int i =0;try{
            i = ps.executeUpdate();}catch(SQLException e){
            e.printStackTrace();}return i;}publicstaticvoidclose(){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

importmysql.util.MysqUtil;importjava.sql.PreparedStatement;publicclassJdbcUtilTest{publicstaticvoidmain(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

在这里插入图片描述


                                                🆗到底啦给靓仔一个关注吧!
标签: mysql 数据库 java

本文转载自: https://blog.csdn.net/hujieliang123/article/details/122397270
版权归原作者 liangzai2048 所有, 如有侵权,请联系我们删除。

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

还没有评论