• 第15周作业


    题目:

    编写一个应用程序,输入用户名和密码,访问test数据库中t_login表(字段包括id、username、password),验证登录是否成功。当登录成功后,将t_user表(id、name、sex、birthday)的信息进行显示(要求使用DB.java完成登录和获取t_user表中数据的操作),最后再对t_user表进行一条记录的添加操作。

    代码:

    1、DB.java

    package cctv.tuil;
    
    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;
    	private static DB db;
    	static{
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	private DB(){
    		try {
    			con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	public static DB getInstence(){
    		if(db==null){
    			db=new DB();
    		}
    		return db;
    	}
    	//下代码块为  查询操作
    	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 executeModify(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) {
    			e.printStackTrace();
    		}
    	}
    
    }
    

    2、test类

    package cctv.tuil;
    import java.util.*;
    import cctv.tuil.*;
    import java.sql.*;
    public class test {
    
    	public static void main(String[] args) {
    		Scanner r=new Scanner(System.in);
    		System.out.println("请输入用户名:");
    		String username=r.nextLine();
    		System.out.println("请输入密码:");
    		String password=r.nextLine();
    		Object []login={username,password};//Object数据,存放用户名、密码
    		String LoginSql="select * from t_login where username=? and password=?";
    		DB d=DB.getInstence();
    		ResultSet rs=d.executeSelect(LoginSql, login);//传递参数:登录的Sql语句、Login数组
    		try {
    			if(rs.next()){
    				System.out.println("登录成功");
    				String SelectSql="select * from t_user";
    				System.out.println("t_user表中记录如下:");
    				ResultSet select=d.executeSelect(SelectSql, args);//将查询的sql语句传给方法,查询表中信息
    				System.out.println("id	"+"name	"+"sex	"+"birthday	");
    				//循环输出结果集中查出的 信息
    				while(select.next()){
    					int id=select.getInt(1);
    					String name=select.getString(2);
    					String sex="男";
    					int temp=select.getInt(3);
    					if(temp==1){
    						sex="女";//sex字段:0为男,1为女。此处将数字转换成对应的性别
    					}
    					String birthday=select.getString(4);
    					System.out.println(id+"	"+name+"	"+sex+"	"+birthday+"	");
    				}
    			}
    			else
    				System.out.println("登录失败,请重新登录");
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		//下代码块为插入操作
    		System.out.println("请输入一条新记录:");
    		String name=r.nextLine();
    		int sex=r.nextInt();
    		r.nextLine();
    		String birthday=r.nextLine();
    		String InsertSql="insert into t_user(name,sex,birthday) values (?,?,?)";
    		Object[] insert={name,sex,birthday};//数组存放需要传递的参数
    		int n=d.executeModify(InsertSql, insert);//传递参数
    		if(n!=0){
    			System.out.println("记录添加成功");
    		}
    		
    		d.close();//断开连接
    	}
    
    }

    运行结果:

    1、数据表初始状态

    2、程序运行,查询t_user表全部记录,并插入一条新记录

    3、t_user 表插入成功

  • 相关阅读:
    [经验交流] kubernetes v1.11 更新了高可用方案
    Java泛型和编译优化的一个例子
    Java泛型和编译优化的一个例子
    Java泛型和编译优化的一个例子
    浅析JSONP-解决Ajax跨域访问问题
    java设计原则---开闭原则
    for,foreach,iterator的用法和区别
    List,Set,Map三种接口的区别
    为什么接口中定义的变量必须为常量?
    重写,string创建内存问题
  • 原文地址:https://www.cnblogs.com/whohow/p/12034502.html
Copyright © 2020-2023  润新知