第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\t"+"name\t"+"sex\t"+"birthday\t");
				//循环输出结果集中查出的 信息
				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+"\t"+name+"\t"+sex+"\t"+birthday+"\t");
				}
			}
			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 表插入成功

posted @ 2019-12-13 12:47  胡烙懿  阅读(148)  评论(0编辑  收藏  举报