第15周作业
题目1:编写一个应用程序,输入用户名和密码,访问test数据库中t_login表(字段包括id、username、password),验证登录是否成功。
1 package com; 2 3 import java.sql.DriverManager; 4 import java.sql.ResultSet; 5 import java.sql.Statement; 6 import java.util.Scanner; 7 8 public class JdbcConnection { 9 10 11 public static void main(String[] args) { 12 try { 13 Class.forName("com.mysql.jdbc.Driver"); //加载驱动 14 Scanner reader=new Scanner(System.in); 15 System.out.println("请输入用户名"); 16 String id=reader.nextLine(); 17 System.out.println("请输入密码:"); 18 String pw=reader.nextLine(); 19 20 java.sql.Connection con=DriverManager.getConnection("jdbc:mysql://localhost:8080/test",id,pw); //数据库连接对象 21 Statement st=con.createStatement(); //执行sql语句对象 22 ResultSet rs=st.executeQuery("select * from t_login where username='ding'"); //执行sql语句,结果存在结果集中 23 while(rs.next()){ 24 System.out.println("成功登录"); 25 26 } 27 if(rs!=null){ 28 rs.close(); //关闭数据库 29 } 30 st.close(); 31 con.close(); 32 33 34 } catch (Exception e) { 35 // TODO Auto-generated catch block 36 e.printStackTrace(); 37 } 38 39 } 40 41 }
运行结果:
题目2:在上一题基础上,当登录成功后,将t_user表(id、name、sex、birthday)的信息进行显示(要求使用DB.java完成登录和获取t_user表中数据的操作),最后再对t_user表进行一条记录的添加操作。
DB.java
1 package com; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.util.Scanner; 9 10 public class DB { 11 Connection con; //对象声明 12 PreparedStatement pre; 13 ResultSet rs; 14 static DB db; 15 public static DB getInstance(){ 16 if(db==null){ //单态模式 17 db=new DB(); 18 } 19 return db; 20 } 21 22 private DB(){ 23 try { 24 25 con=DriverManager.getConnection("jdbc:mysql://localhost:8080/test","root","142587"); //数据库连接对象 26 } catch (SQLException e) { 27 // TODO Auto-generated catch block 28 e.printStackTrace(); 29 } 30 } 31 static{ //静态代码块 完成驱动的加载 32 try { 33 Class.forName("com.mysql.jdbc.Driver"); 34 } catch (ClassNotFoundException e) { 35 // TODO Auto-generated catch block 36 e.printStackTrace(); 37 } 38 39 } 40 public ResultSet excuteSelect (String sql,Object []args){ //数据库查询操作 41 try { 42 pre=con.prepareStatement(sql); //创建预处理对象 43 if(args.length>0){ //判断Object数组是否有值,传给pre对象 44 for(int i=0;i<args.length;i++){ 45 pre.setObject(i+1, args[i]); 46 } 47 } 48 rs=pre.executeQuery(); //pre执行sql语句,返回值存储在rs中 49 } catch (SQLException e) { 50 // TODO Auto-generated catch block 51 e.printStackTrace(); 52 } 53 return rs; //返回结果集 54 } 55 56 57 public int executModify(String sql, Object []args){//数据库增/删/改操作; 58 int n = 0; 59 try { 60 pre = con.prepareStatement(sql); //预处理对象 61 if(args.length > 0){ ////判断Object数组是否有值,传给pre对象 62 for(int i = 0; i < args.length; i++){ 63 pre.setObject(i+1, args[i]); 64 } 65 } 66 n = pre.executeUpdate(); //n来接收excuteUpdate的返回值 67 } catch (SQLException e) { 68 e.printStackTrace(); 69 } 70 return n; //返回n值 71 } 72 public void close(){ 73 try { 74 if(rs != null){ //关闭连接 释放资源 75 rs.close(); 76 } 77 con.close(); 78 pre.close(); 79 } catch (SQLException e) { 80 e.printStackTrace(); 81 } 82 } 83 84 }
JdbcTest.java
1 package com; 2 3 import java.sql.ResultSet; 4 import java.sql.SQLException; 5 import java.util.Scanner; 6 7 public class JdbcTest { 8 9 10 public static void main(String[] args) { 11 Scanner reader = new Scanner(System.in); 12 System.out.println("请输入用户名:"); 13 14 String username = reader.next(); 15 System.out.println("请输入密码:"); 16 String password = reader.next(); 17 Object []a = new Object[0]; //定义Object数组 18 String sql = "select * from t_login where username='ding'"; //sql语句 查询t_login表格 19 DB db = DB.getInstance(); //调用db对象的getInstance方法 20 db.excuteSelect(sql, a); //db对象执行excuteselect方法 21 try { 22 if(db.rs.next()){ //判断如果浮标移动以后有元素 则查询成功 23 System.out.println("登录成功!"); 24 Object []b = new Object[0]; 25 sql = "select * from t_user ";//sql语句2 26 db.excuteSelect(sql, b); //执行sql语句2 27 String t_userName;//创建三个对象表示t_user表中的字段 28 String t_userSex ; 29 String t_userBirthday; 30 while(db.rs.next()){//将t_user中的数据显示出来 31 t_userName= db.rs.getString(2); 32 t_userSex = db.rs.getString(3); 33 t_userBirthday = db.rs.getString(4); 34 System.out.println("姓名:"+t_userName+" 性别:"+t_userSex +" 生日:"+t_userBirthday+""); 35 } 36 System.out.println("你想添加什么信息:1.姓名2.性别3.生日"); //添加信息 37 String insertName = reader.next(); 38 String insertSex = reader.next(); 39 String insertBirthday = reader.next(); 40 Object []c = {insertName, insertSex , insertBirthday}; 41 sql = "insert into t_user (name,sex,birthday) values(?,?,?)"; //执行sql语句,n来接受返回结果集 42 int n= db.executModify(sql, c); 43 if(n>0){ 44 System.out.println("添加成功!"); 45 }else{ 46 System.out.println("添加失败!"); 47 } 48 }else{ 49 System.out.println("登录失败!"); 50 } 51 } catch (SQLException e) { 52 e.printStackTrace(); 53 } 54 } 55 }
运行结果: