第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 表插入成功