惊!还能这么写登陆注册!

惊!还能这样子登陆注册!

数据库的连接就省略了每个人的连接方式不同,在这就不一一赘述。

先进行简答的修改看看和数据库是否连通

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

public class jdk_test {
     public static void main(String[] args) throws ClassNotFoundException ,SQLException{
//        //1.导入jar包
//        //2.注册驱动
//        Class.forName("com.mysql.jdbc.Driver");//alt+回车
//        //3.获取数据库连接对象
//        Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/nch?useSSL=false","root","123456");
//        //4.定义sql
//        String sql="update nch1 set name = 'qwe' where id=2 " ;
//        //5.获取执行sql语句的对象.Statement
//        Statement statement = connection.createStatement();
//        //6.执行sql语句,接收返回结果
//        int count = statement.executeUpdate(sql);
//        //7.处理结果
//        System.out.println(count);
//        //8.释放资源
//        statement.close();
//        connection.close();

在这里插入图片描述
出现这样的运行结果说明已经连接成功了!

步入主题

JDBC概念:Java Database Connectivity
基本步骤:

  1. 导入jar包,右键——> add as library
  2. 注册驱动
  3. 获取数据库连接对象Connection
  4. 定义sq|语句
  5. 获取执行sq|语句的对象,Staterment
  6. 执行sq|,接收返回结果
  7. 处理结果
  8. 释放资源
    (如果有波浪线将光标移至波浪线处,alt+回车就会有对应的解决方法!)

创建一个jdbc.properties

在这里插入图片描述

url=jdbc:mysql://localhost:3306/nch?useSSL=false
user=root
password=123456
driver=com.mysql.jdbc.Driver

建立JDBCUtils.java文件

用于存放连接数据库的方法,及断开数据库的方法。

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

public class JDBCUtils {
    private static String url;
    private static String user;
    private static String psssword;
    private static String driver;

    //读取文件,只需读取一次即可拿到这些值,使用静态代码块
    static {
        try {
            //1.创建Properties集合类
            Properties pro=new Properties();
            //获取src路径下文件————>ClassLoader 类加载器
            ClassLoader classLoader=JDBCUtils.class.getClassLoader();
            URL res=classLoader.getResource("jdbc.properties");
            String path = res.getPath();
            System.out.println(path);

            //2.加载文件
            pro.load(new FileReader(path));

            //3.获取数据,赋值
            url = pro.getProperty("url");
            user = pro.getProperty("user");
            psssword = pro.getProperty("password");
            driver = pro.getProperty("driver");

            //4.注册驱动
            Class.forName(driver);


        }catch (IOException e){
            e.printStackTrace();
        }catch (ClassNotFoundException e1){
            e1.printStackTrace();
        }
    }

    //连接
    public static Connection getCounection() throws SQLException{
        return DriverManager.getConnection(url,user,psssword);
    }

    //释放资源
    public static void close(ResultSet rs,Statement stmt,Connection conn) throws SQLException{  //ResultSet 结果集
        if(rs != null){
            rs.close();
            stmt.close();
        }
        if (stmt != null){
            stmt.close();
        }
        if(conn != null){
            conn.close();
        }
    }

    public static void close(Statement stmt,Connection conn) throws SQLException{
        if (stmt != null){
            stmt.close();
        }
        if(conn != null){
            conn.close();
        }
    }
}

主函数

用于登陆注册的验证
这一段呢是输出登陆和注册的信息

 Scanner sc = new Scanner(System.in);
    System.out.println("登陆/注册(1/0):");
    if(sc.nextLine().equals("0"))
    {
        System.out.println("请输入用户名:");
        String username = sc.nextLine();
        System.out.println("请输入密码:");
        String password = sc.nextLine();
        System.out.println("请确认密码:");
        String repassword = sc.nextLine();
        if(password.equals(repassword)){
            //调用方法
            boolean flag = new jdk_test().register(username,password);
            if(flag){
                System.out.println("注册成功!");
            }else {
                System.out.println("注册失败!");
            }
        }else {
            System.out.println("两次输入的密码不同!");
        }
    }else {
        System.out.println("请输入用户名:");
        String username = sc.nextLine();
        System.out.println("请输入密码:");
        String password = sc.nextLine();
        //调用方法
        boolean flag = new jdk_test().login(username,password);
        if(flag){
            System.out.println("登陆成功!");
        }else {
            System.out.println("登陆失败!");
        }
    }
}

登陆方法

//登陆方法
public boolean login(String username,String password) throws SQLException {
    if(username == null || password == null) {
        return false;
    }
    Connection conn=null;
    Statement stmt=null;
    ResultSet rs=null;

    try {
        conn = JDBCUtils.getCounection();
        //定义sql
        String sql = "select * from user where name = '"+username+"' and password = '"+password+"'";
        //获取执行sql对象
        stmt = conn.createStatement();
        //执行查询
        rs=stmt.executeQuery(sql);
        return rs.next();               
    }catch (SQLException e){
        e.printStackTrace();
    }finally {
        JDBCUtils.close(rs,stmt,conn);
    }
    return false;
}

注册方法

//注册方法
public boolean register(String username,String password) throws SQLException {
    boolean back=false;
    if(username == null || password == null) {
        return back;
    }
    Connection conn=null;
    Statement stmt=null;
    ResultSet rs=null;

    try {
        conn = JDBCUtils.getCounection();

        //确认该账号是否已被注册 查询语句
        //定义sql
        String sql1 = "select * from user where name = '"+username+"'";
        //获取执行sql对象
        stmt = conn.createStatement();
        //执行查询
        rs=stmt.executeQuery(sql1);
        if(rs.next())
        {
            System.out.println("该账号已存在!");
            return back;
        }

        //开始注册 插入语句
        //定义sql
        String sql = "INSERT INTO user (name,password) VALUES ('"+username+"','"+password+"')";
        //获取执行sql对象
        stmt = conn.createStatement();
        //执行插入
        if(stmt.executeUpdate(sql)>=1)
            back=true;
        return back;
    }catch (SQLException e){
        e.printStackTrace();
    }finally {
        JDBCUtils.close(stmt,conn);
        JDBCUtils.close(rs,stmt,conn);
    }
    return back;
}

以下是运行所有结果的截图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值