JDBC与MySql数据库

一、系统开发前的环境准备

1.下载Mysql

下载地址:https://dev.mysql.com/downloads/mysql/

文件解压缩到本地
在这里插入图片描述
在此路径下新增my.ini文件以及新建data文件夹

在这里插入图片描述
编辑my.ini文件
在这里插入图片描述
配置环境变量
在这里插入图片描述
在这里插入图片描述
注意是编辑系统变量的Path
在这里插入图片描述
以管理员身份运行cmd,或者win+r 再ctrl+shift+enter
在这里插入图片描述

输入命令:mysqld install
安装成功后输入:mysqld --initialize --user=root --console
注意:最后面的root@localhost后的文字为初始化的root 密码,一定要记住

启动MySQL服务
输入命令:net start mysql

登陆MySQL数据库
输入命令:mysql -u root -p,再按回车,输入密码
密码为上面root@localhost后初始化的密码

修改密码
输入命令:ALTER USER 'root'@'localhost' IDENTIFIED BY ‘新密码’;

2.下载Navicat

下载解压,得到32位和和64位navicat premium 15中文原程序和patch文件;64位是第二个
在这里插入图片描述
以64位为例,双击文件“navicat150_premium_cs_x64.exe”安装软件,依提示安装即可;

二、创建数据库

打开navicat
在这里插入图片描述
在这里插入图片描述
双击,即可新建数据库啦。
如果已有数据库文件,也要在此新建一个数据库,然后选中此数据库,右击点击“运行SQL文件”,选择你的数据库文件,即可完成附加数据库。
在这里插入图片描述

三、Java连接数据库

1.在数据库表中添加一条记录

package com.hbnu.jdbc;

import java.sql.*;

public class Demo1 {
    public static void main(String[] args) {
        Connection connection=null;
        Statement statement=null;
        try {
            //1.注册驱动
            DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
            //2.获取数据库连接对象
            String url="jdbc:mysql://localhost:3306/class2110?serverTimezone=GMT&useSSL=false";
            String user="root";
            String password="123456";
            connection=DriverManager.getConnection(url,user,password);
            //3.获取数据库操作对象
            statement=connection.createStatement();//创建数据库操作对象
            //4.执行sql语句
            String sql="insert into tb_user values('xxxten','湖北',56233)";
            int count=statement.executeUpdate(sql);
            //5.处理查询结果集
            System.out.println("影响了"+count+"条记录");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //6.关闭数据库资源
        finally {
            try{
                if(statement!=null){
                    statement.close();
                }
            }catch (SQLException e){
                e.printStackTrace();
            }
            if(connection!=null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

2.删除数据表的某条记录

package com.hbnu.jdbc;

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

public class Demo2 {
    public static void main(String[] args) {
        try {
            DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
            String url="jdbc:mysql://localhost:3306/class2110?serverTimezone=GMT&useSSL=false";
            String user="root";
            String password="123456";
            Connection connection = DriverManager.getConnection(url, user, password);
            Statement statement = connection.createStatement();

            String sql="delete from tb_user where id=1";
            int count=statement.executeUpdate(sql);
            System.out.println("影响了数据表"+count+"条数据");

            statement.close();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

3.修改数据表的某条记录

package com.hbnu.jdbc;

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

public class Demo3 {
    public static void main(String[] args) {
        try {
            DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());

            String url="jdbc:mysql://localhost:3306/class2110?serverTimezone=GMT&useSSL=false";
            String user="root";
            String password="123456";
            Connection connection = DriverManager.getConnection(url, user, password);

            Statement statement = connection.createStatement();
            String sql="update tb_user set username='tp加疾跑' where id=2";
            int count=statement.executeUpdate(sql);

            System.out.println("影响了"+count+"条记录");

            statement.close();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

4.查询数据表的记录

package com.hbnu.jdbc;

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

public class Demo4
{
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");

            String url="jdbc:mysql://localhost:3306/class2110?serverTimezone=GMT&useSSL=false";
            String user="root";
            String password="123456";
            Connection connection = DriverManager.getConnection(url, user, password);
            Statement statement = connection.createStatement();

            String sql="select id,username,address,account from tb_user";
            ResultSet resultSet=statement.executeQuery(sql);
            //处理查询结果集
            while(resultSet.next()){
                //通过具体字段名以具体类型获取数据
                int id=resultSet.getInt("id");
                String username=resultSet.getString("username");
                String address=resultSet.getString("address");
                double account=resultSet.getDouble("account");

                System.out.println("id:"+id+"\tusername:"+username+"\taddress:"+address+"\taccount:"+account);
            }
            //关闭数据库资源
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

5.制作一个用户使用账号和密码登录的案例
数据库内容如:
在这里插入图片描述

package com.hbnu.jdbc;

import java.sql.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Demo5 {
    public static void main(String[] args) {
        //用户输入账号和密码的界面
        Map<String,String>loginInfo=loginUI();

        //校验用户的登录信息
        boolean result=checkLoginInfo(loginInfo);

        System.out.println(result?"账号密码正确,登录成功":"账号密码错误,登录失败");
    }

    private static boolean checkLoginInfo(Map<String, String> loginInfo) {
        //定义一个登录成功或失败的标记
        boolean flag=false;

        //从集合中获取用户信息,获取用户输入的账号和密码
        String username=loginInfo.get("username");
        String password=loginInfo.get("password");

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");

            String url="jdbc:mysql://localhost:3306/class2110?serverTimezone=GMT&useSSL=false";
            String user="root";
            String pwd="123456";
            Connection connection = DriverManager.getConnection(url, user, pwd);

            //会产生SQL注入,所以用prepareStatement
//            Statement statement = connection.createStatement();

            //问号是占位符
            String sql="select * from tb_user where username=? and password=?";
            //对SQL语句进行预编译
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            //给占位符赋值,第一个问号的下标就是1
            preparedStatement.setString(1,username);
            preparedStatement.setString(2,password);
            ResultSet resultSet = preparedStatement.executeQuery();
            while (resultSet.next()){
                //如果能进入while循环,则说明用户输入的账号和密码是正确的
                flag=true;
                break;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }

    private static Map<String, String> loginUI() {
        //定义Map集合,用于存放用户的账号和密码
        Map<String,String>loginInfo=new HashMap<>();

        //获取用户输入的账号和密码
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的账号:");
        String username=scanner.nextLine();
        System.out.println("请输入您的密码:");
        String password=scanner.nextLine();

        //将用户输入的账号和密码存入集合中
        loginInfo.put("username",username);
        loginInfo.put("password",password);
        //将存放账号和密码的集合发送给后端进行校验
        return loginInfo;
    }
}

持续更新。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值