第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 }

 

运行结果:

posted @ 2019-12-15 01:24  丁宝铭  阅读(111)  评论(0编辑  收藏  举报