首页 > 编程语言 >java_day17_JDBC、登录注册修改案例

java_day17_JDBC、登录注册修改案例

时间:2024-10-19 09:22:24浏览次数:1  
标签:JDBC java String System day17 out public conn name

一、JDBC

JDBC编写六步走:
    1、注册驱动,告诉java程序我们要链接什么数据库
        【mysql为案例】
            5.1.x驱动包中的驱动类路径:【com.mysql.jdbc.Driver】
            8.x.x驱动包中的驱动类路径:【com.mysql.cj.jdbc.Driver】
    2、创建与数据库的链接对象
    3、创建操作数据库对象
    4、操作数据库对象调用方法执行sql语句,操作数据库
    5、如果第4步是查询操作的话,需要进一步分析查询结果
    6、释放资源,关闭与数据库的链接

代码案例:

public class JDBCDemo1 {
    public static void main(String[] args) throws Exception {
        // 注册驱动,告诉java程序我们要链接什么数据库
        Class.forName("com.mysql.jdbc.Driver");

        // 创建与数据库的链接对象
        // public static Connection getConnection(String url,String user, String password)
        /**
         * url: 超链接
         *  jdbc:mysql://192.168.6.101:3306/bigdata?characterEncoding=UTF-8&useUnicode=True&useSSL=false
         * username: root
         * password: 123456
         */
        String url = "jdbc:mysql://192.168.233.101:3306/bigdata?characterEncoding=UTF-8&useUnicode=True&useSSL=false";
        String username = "root";
        String password = "123456";
        Connection conn = DriverManager.getConnection(url, username, password);
        System.out.println("成功获取与mysql数据库的链接对象:" + conn);

        // 创建操作数据库对象
        Statement state = conn.createStatement();

        // 操作数据库对象调用方法执行sql语句,操作数据库
        // SQL - 结构化查询语言 只要是结构化数据库,基本都可以使用sql语句【mysql是其中一种】
        // 增删改,其它的操作
        // 增加
//        int i = state.executeUpdate("insert into students values(1007,'李刚2',18,'男','文科一班')");
//        if(i==1){
//            System.out.println("插入数据成功!");
//        }else {
//            System.out.println("插入数据失败!");
//        }
        // 删除
//        state.executeUpdate("delete from students where id=1007");
        // 修改
//        state.executeUpdate("update students set name='江川' where id=1006");

        // DQL 查询
        ResultSet resultSet = state.executeQuery("select t1.location as location,count(1) as counts from (select location from jd_comment where productColor='墨玉青') t1 group by t1.location order by counts desc limit 10");

//        resultSet.next();
//        String location = resultSet.getString(1);
//        String counts = resultSet.getString(2);
//        System.out.println(location+": "+counts);

        while (resultSet.next()){
            //根据列索引获取元素,从左向右从1开始
//            String location = resultSet.getString(1);
//            String counts = resultSet.getString(2);

            // 根据列名获取
            String location = resultSet.getString("location");
            String counts = resultSet.getString("counts");

            System.out.println(location+": "+counts);
        }

        // 释放资源,关闭与数据库的链接
        state.close();
        conn.close();

    }
}

二、登录注册修改案例

用户类存储用户的用户名和密码

public class User {
    private String name;
    private String pwd;

    public User() {
    }

    public User(String name, String pwd) {
        this.name = name;
        this.pwd = pwd;
    }

    public String getName() {
        return name;
    }

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

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

MySQL配置文件

url=jdbc:mysql://192.168.6.101:3306/bigdata?characterEncoding=UTF-8&useUnicode=True&useSSL=false
username=root
password=123456

MySQL连接工具类【获取MySQL连接对象】

import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

public class MySQLTool {
    private static Properties prop;
    private static Connection conn;
    private MySQLTool(){}

    public static Connection getConnection(){
        try {
            //创建Properties对象
            prop = new Properties();
            prop.load(new BufferedReader(new FileReader("D:\\projects\\ideaprojects\\bigdata\\src\\com\\wll\\day17\\mysql.properties")));
            String url = prop.getProperty("url");
            String username = prop.getProperty("username");
            String password = prop.getProperty("password");

            // 注册驱动,告诉java程序我们要链接什么数据库
            Class.forName("com.mysql.jdbc.Driver");

            conn = DriverManager.getConnection(url, username, password);
        }catch (Exception e){
            e.printStackTrace();
        }

        return conn;
    }
}

测试类

import com.wll.day17.entity.User;
import com.wll.day17.utils.MySQLTool;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class IODemo1 {
    public static void init() {
        Scanner sc = new Scanner(System.in);
        System.out.println("========欢迎光临^_^========");
        System.out.println("----------------------------------");
        System.out.print("选择您要做的操作:1:登录,2:注册,3:修改密码:");
        int i = sc.nextInt();
        switch (i) {
            case 1:
                login();
                break;
            case 2:
                register();
                break;
            case 3:
                update();

        }
    }

    public static void update(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String name = sc.nextLine();
        if(!isUserExistWithName(name)){
            System.out.println("用户不存在,请注册");
            return;
        }
        System.out.println("请输入旧密码");
        String oldPassword = sc.nextLine();
        User user = getUserWithNameAndPassword(name,oldPassword);
        if (user!=null){
            System.out.println("请输入新密码:");
            String newPassword = sc.nextLine();
            updateUser(name,newPassword);
        }else {
            System.out.println("输入的密码不对!!");
        }

    }

    public static void updateUser(String name,String newPassword){

        Connection conn = null;
        Statement state = null;


        try {
            conn = MySQLTool.getConnection();
            state = conn.createStatement();

            int i = state.executeUpdate("update users set password ='" + newPassword + "' where name='" + name + "'");
            if (i==1) {
                System.out.println("密码修改成功!!");
            }else{
                System.out.println("密码修改失败!!");
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            if (state != null) {
                try {
                    state.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }


    }

    public static void register(){
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入用户名:");
        String name = sc.nextLine();
        if (isUserExistWithName(name)){
            System.out.println("用户已存在");
            return;
        }
        System.out.print("请输入密码:");
        String password = sc.nextLine();

        saveUser(name,password);



    }

    public static void saveUser(String name,String pwd){

        Connection conn = null;
        Statement statement = null;

        try {
            conn = MySQLTool.getConnection();
            statement = conn.createStatement();

            int id = 0;
            ResultSet resultSet = statement.executeQuery("select max(id)  from users");
            while (resultSet.next()) {
                if(resultSet.getString(1)!=null){
                    id = Integer.parseInt(resultSet.getString(1)) + 1;
                }
                else {
                    id=1;
                }
            }
            String sql = "insert into users values(" + id + ",'" + name + "','" + pwd + "')";
            int i = statement.executeUpdate(sql);
            if (i == 1) {
                System.out.println("用户保存成功!!");
            } else {
                System.out.println("用户保存失败!!");
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }


    }

    public static void login() {
        Scanner sc = new Scanner(System.in);
        System.out.println("------------------>正在进行登录操作");
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.print("请输入用户名:");
        String name = sc.nextLine();
        if (!isUserExistWithName(name)) {
            System.out.println("用户不存在,请注册用户");
            return;
        }

        System.out.print("请输入密码:");
        String password = sc.nextLine();
        User user = getUserWithNameAndPassword(name, password);
        if (user!=null){
            System.out.println("登录成功");
        }else {
            System.out.println("您输入的密码不对");
        }


    }

    public static User getUserWithNameAndPassword(String name, String password) {
        Connection conn = null;
        Statement state = null;
        User user = null;

        try {
            conn = MySQLTool.getConnection();
            state = conn.createStatement();
            ResultSet resultSet = state.executeQuery("select name,password from users where name='" + name + "' and password='" + password + "'");
            while (resultSet.next()) {
                String userName = resultSet.getNString(1);
                String pwd = resultSet.getNString(2);
                user=new User(userName,pwd);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            if (state != null) {
                try {
                    state.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return user;


    }



    public static Boolean isUserExistWithName(String name) {
        Connection conn = null;
        Statement state = null;
        boolean flag = false;

        try {
            conn = MySQLTool.getConnection();
            state = conn.createStatement();
            ResultSet resultSet = state.executeQuery("select name from users where name='" + name + "'");
            while (resultSet.next()) {
                flag = true;
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            if (state != null) {
                try {
                    state.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return flag;
    }

    public static void main(String[] args) {
        init();
    }
}

标签:JDBC,java,String,System,day17,out,public,conn,name
From: https://www.cnblogs.com/w-ll/p/18475485

相关文章

  • 【Java系列】基于SSM框架的房屋中介服务平台设计与实现(源码+文档+部署讲解等)
    文章目录1.前言2.详细视频演示3.程序运行示例图4.文档参考5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue5.3程序操作流程6.选题推荐7.原创毕设案例8.系统测试8.1系统测试的目的8.2系统功能测试9.代码参考10.为什么选择我?11.获取源码1.前言......
  • java中的类型转换
    一、自动类型转换1.在java中,变量参与运算的时候会自动提升数据类型byte,short,char->int->long->float->double二、强制类型转换1.语句格式:目标数据类型变量名=(目标数据类型)要转型的变量值或者表达式publicclassDataTypeDemo2{publicstaticvoidmain(Str......
  • 【Java系列】基于Javaweb的在线餐饮管理系统设计与实现(源码+文档+部署讲解等)
    文章目录1.前言2.详细视频演示3.程序运行示例图4.文档参考5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue5.3程序操作流程6.选题推荐7.原创毕设案例8.系统测试8.1系统测试的目的8.2系统功能测试9.代码参考10.为什么选择我?11.获取源码1.前言......
  • python+uniapp微信小程序线上点餐管理信息系统java+nodejs-毕业设计
    前端开发框架:vue.js数据库mysql版本不限后端语言框架支持:1java(SSM/springboot)-idea/eclipse2.Nodejs+Vue.js-vscode3.python(flask/django)--pycharm/vscode4.php(thinkphp/laravel)-hbuilderx数据库工具:Navicat/SQLyog等都可以 随着科技的不断发展,移动互联网......
  • python+vue基于django/flask的在线投票管理系统java+nodejs-计算机毕业设计
    目录技术栈和环境说明具体实现截图预期达到的目标系统设计详细视频演示技术路线解决的思路性能/安全/负载方面可行性分析论证python-flask核心代码部分展示python-django核心代码部分展示研究方法感恩大学老师和同学源码获取技术栈和环境说明本系统以Python开发语言......
  • python+vue基于django/flask的美食分享推荐系统Java+nodejs-计算机毕业设计
    目录技术栈和环境说明具体实现截图预期达到的目标系统设计详细视频演示技术路线解决的思路性能/安全/负载方面可行性分析论证python-flask核心代码部分展示python-django核心代码部分展示研究方法感恩大学老师和同学源码获取技术栈和环境说明本系统以Python开发语言......
  • Java 初学 day14
    day141、List集合练习1、获取10个1-20之间的随机数,要求不能重复publicclassListTest1{publicstaticvoidmain(String[]args){Randomrandom=newRandom();//intnumber=random.nextInt(20)+1;//System.out.println(number);......
  • java中的常量和变量
    一、java中的常量1.定义:在java程序运行过程中其值不能发生改变的量2.分类:1、字面值常量整数常量表示所有的整数,包括负数10-8小数常量表示所有的小数1.23-3.14布尔常量truefalse空常量null字符......
  • Java最全面试题->Java基础面试题->JavaWeb面试题->Cookie/Session面试题
    Cookie/Session下边是我自己整理的面试题,基本已经很全面了,想要的可以私信我,我会不定期去更新思维导图哪里不会点哪里什么是Cookie?HTTPCookie(也叫WebCookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求......
  • Nodejs java python php基于微信平台的二次元手办商场小程序
    目录项目介绍具体实现截图设计方法和思路技术介绍小程序框架以及目录结构介绍java类核心代码部分展示其他小程序项目推荐系统测试详细视频演示源码获取项目介绍小程序选用微信开者与Nodejsjavapythonphp语言,应用uniapp框架,MySQL为后台数据库。系统主要包括用户......