第15周作业

 

题目1:编写一个应用程序,输入用户名和密码,访问test数据库中t_login表(字段包括id、username、password),验证登录是否成功。

package factorial;

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

public class ConnectMySql {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入名字");
        String  name = input.next();
        System.out.println("请输入密码");
        String password = input.next();
        Connection con = null;
        PreparedStatement pre = null;
        ResultSet rs = null;
        //1.
        try {
            Class.forName("com.mysql.jdbc.Driver");
        //2.
            con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/t_test?useSSL=false", "root", "lijimin");
        //3.
            pre = con.prepareStatement(""
                    + "select * from t_login where name = ? and password = ?");
            pre.setString(1, name);
            pre.setString(2, password);
            //4.
            rs = pre.executeQuery();
            if(rs.next()) {
                System.out.println("yes");
            }
            else {
                System.out.println("no");
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if(rs != null) {
                    rs.close();
                }
                pre.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
        }    
    }

}

运行结果:

 

题目2:在上一题基础上,当登录成功后,将t_user表(id、name、sex、birthday)的信息进行显示(要求使用DB.java完成登录和获取t_user表中数据的操作),最后再对t_user表进行一条记录的添加操作。

Ver1.0:

db.java:

/**
 * 数据库管理
 */
package factorial;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DB {
    private Connection con;
    private PreparedStatement pre;
    private ResultSet rs;
    
    
 /**
  * 单态.
  *这个类在整个生命周期中只会被加载一次,因此只会创建一个实例,即能够充分保证单例。
  *3个要素:
  *1.私有的构造方法
  *2.指向自己实例的私有静态引用
  *3.以自己实例为返回值的静态的共有方法
  */
    private static DB db;
    public static DB getInstance() {
        if(db ==null) {
            db = new DB();
        }
        return db;
        
    }

//无参构造方法
    DB(){
        try {
            //连接数据库
            con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/t_test?useSSL=false","root", "lijimin");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
//静态区,加载驱动
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    
/**
 * 
 * @param sql: 传入的sql语句
 * @param args 使用预处理set****()语句放入值
 * @return
 */

    public ResultSet executeSelect(String sql,Object[] args) {
        try {
            pre = con.prepareStatement(sql);
            if(args.length > 0) {
                for(int i = 0; i < args.length; i++) {
                    pre.setObject(i+1, args[i]);
                }
            }
            rs = pre.executeQuery(); //执行语句
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return rs; 
    }
    
    //更新用
    public int executeUpdate(String sql,Object[] args) {
        int n = 0;
        try {
            pre = con.prepareStatement(sql);
            if(args.length > 0) {
                for(int i = 0; i < args.length; i++) {
                    pre.setObject(i+1, args[i]);
                }
            }
            n = pre.executeUpdate();//更新
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return  n;
    }
    
    //关闭
    public void close(){
        
            try {
                if(rs!=null) {
                    rs.close();
                }
                pre.close();
                con.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        
    }

}

User.java:

 

package factorial;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class User {

    public static void main(String[] args) {
        Scanner input =new Scanner(System.in); 
        
        //登录
        System.out.println("请输入名字");
        String  name = input.next();
        System.out.println("请输入密码");
        String password = input.next();
        DB test  = DB.getInstance();
        DB test2  = DB.getInstance();
        Object[] object = {name,password};
        int judge = 0;
        String Select1 = "select * from t_login where name = ? and password = ?";
        try {
            ResultSet result1 =test.executeSelect(Select1,object);
            if(result1.next()) {
                System.out.println("登录成功");
                judge = 1;
            }
            else {
                System.out.println("登录失败");
                judge = 0;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //获取信息
        System.out.println("信息如下");
        if(judge == 1) {
             String Select2 = "select * from t_user";
             Object[] object2 = new Object[0];
             try {
                 ResultSet result2 =test2.executeSelect(Select2,object2);
                 while(result2.next()) {    
                     String id = result2.getString(1);
                     String username = result2.getString(2);
                     String sex = result2.getString(3);
                     String birthday = result2.getString(4);
                     System.out.println("-" + id + "--" + username + "--" + sex + "--" + birthday+"-");
                 }
            } catch (SQLException e) {
                e.printStackTrace();
            }
             //添加
             System.out.println("添加记录:");
             String newName = input.next();
             String newSex = input.next();
             String newBirthday = input.next();
             Object[] object3 = {newName,newSex,newBirthday};
             String Select3 = "insert into t_user (Name,Sex,Birthday) values(?,?,?)";
             int result3 =test2.executeUpdate(Select3, object3);
             if(result3 > 0) {
                 System.out.println("修改成功");
             }else {
                 System.out.println("修改失败");
             }
        }       
        //关闭
        test.close();
        test2.close();
        
    }

}

 

修改前:

修改后:

posted on 2019-12-12 16:05  李基民  阅读(217)  评论(0编辑  收藏  举报