jdbc作业题

需求:

后台用户管理系统 //id(主键) username password name age sex String 注册 登录(查询一个)
查询所有 修改(只能修改本身) 注销(只能注销本身) 退出

登录之后 才能实现的功能为 查询所有 修改 删除 退出

1.void 登录(username,passowrd){
select * from user where username=xx and password=xx;
id
if(rs时是否登录成功){
} }

2.注销
void 注销(){
delete from user where id=登录获取的id;
}

3.修改(String…str)
update user set ??? where id=登录获取的id;

util类:

public class util {
    //私有化静态变量
    private static String USER;
    private static String PASSWORD;
    private static String URL;
    private static String DRIVER;


    static{
        try {
            //接通资源文件,给静态变量赋值
            Properties properties = new Properties();
            InputStream is = util.class.getClassLoader().getResourceAsStream("jdbc.properties");
            properties.load(is);
            USER=properties.getProperty("user");
            PASSWORD=properties.getProperty("password");
            URL=properties.getProperty("url");
            DRIVER=properties.getProperty("driver");
            Class.forName(DRIVER);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //用来操作登录
    public static ResultSet select(String sql,String...str) throws Exception{
        Connection conn = getConn();
        PreparedStatement ps = conn.prepareStatement(sql);
        for (int i = 0; i <=str.length-1; i++) {
            ps.setString(i+1,str[i]);
        }
        ResultSet resultSet = ps.executeQuery();
        return resultSet;
    }

    //用来操作注册、注销
    public static boolean select1(String sql,String...str) throws Exception{
        Connection conn = getConn();
        PreparedStatement ps = conn.prepareStatement(sql);
        for (int i = 0; i <=str.length-1; i++) {
            ps.setString(i+1,str[i]);
        }
        boolean execute = ps.execute();
        return execute;
    }

    //用来操作修改
    public static boolean select1(String sql,int i) throws Exception{
        Connection conn = getConn();
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setInt(1,i);
        boolean execute = ps.execute();
        return execute;
    }

    public static boolean select2(String sql,int j,String...str) throws Exception{
        Connection conn = getConn();
        PreparedStatement ps = conn.prepareStatement(sql);
        for (int i = 0; i <=str.length-1; i++) {
            ps.setObject(i+1,str[i]);
        }
        ps.setInt(str.length+1,j);
        boolean execute = ps.execute();
        return execute;
    }
    //建立连接
    public static Connection getConn() throws Exception{
        Connection conn = DriverManager.getConnection(URL,USER,PASSWORD);
        return conn;
    }

    //关闭连接
    public static void close(ResultSet re, PreparedStatement ps,Connection coon) throws Exception{
        if(re!=null){
            re.close();
        }
        if(ps!=null){
            ps.close();
        }
        if(coon!=null){
            coon.close();
        }
    }

    public static void close( PreparedStatement ps,Connection coon) throws Exception{
        if(ps!=null){
            ps.close();
        }
        if(coon!=null){
            coon.close();
        }
    }
}

jdbc.properties文件

user=root
password=123456
url=jdbc:mysql://master:3306/stu
driver=com.mysql.jdbc.Driver

test主类测试

public class test {
    private static boolean aBoolean;//判断是否登录成功
    private static boolean bBoolean;//判断是否退出系统
    private static int ID;//登录成功的id
    private static String NAME;//登录成功的姓名
    private static String AGE;//登录成功的年龄
    private static String SEX;//登录成功的性别

    public static void main(String[] args) throws Exception {
        System.out.println("欢迎光临后台用户管理系统");
        start();

    }

    //开始
    public static void start() throws Exception{
        Scanner scanner = new Scanner(System.in);
        while(true){
            System.out.println("请选择您的服务:1、登录 2、注册 3、退出");
            int i1 = scanner.nextInt();
            if(i1==1){
                System.out.println("请输入你的账号:");
                scanner.nextLine();
                String s1 = scanner.nextLine();
                System.out.println("请输入你的密码:");
                String s2 = scanner.nextLine();
                denglu(s1,s2);
                if(aBoolean){
                    while(true){
                        System.out.println("请选择您的服务:1、查询所有 2、修改本条信息 3、注销信息 4、退出");
                        int i2 = scanner.nextInt();
                        switch (i2){
                            case 1:
                                chaxun();
                                break;
                            case 2:
                                scanner.nextLine();
                                System.out.println("请输入修改的姓名(不修改可以回车):");
                                String s3 = scanner.nextLine();
                                System.out.println("请输入修改的年龄(不修改可以回车):");
                                String s4 = scanner.nextLine();
                                System.out.println("请输入修改的性别(不修改可以回车):");
                                String s5 = scanner.nextLine();
                                xiugai(s3,s4,s5);
                                break;
                            case 3:
                                zhuxiao();
                                System.out.println("账号不存在,返回首页");
                                bBoolean=true;
                                break;
                            case 4:
                                System.out.println("成功退出此账号");
                                bBoolean=true;
                                break;
                            default:
                                System.out.println("输入有误");
                                break;
                        }
                        if(bBoolean){
                            break;
                        }
                    }
                }else{

                }
            }else if(i1==2){
                System.out.println("请输入您的账号");
                String username = scanner.nextLine();
                System.out.println("请输入您的密码");
                String password = scanner.nextLine();
                zhuce(username,password);
            }else if(i1==3){
                System.out.println("成功退出系统");
                break;
            }
            else{
                System.out.println("输入有误");
            }
        }
    }

    //查询
    public static void chaxun() throws Exception{
        util u = new util();
        String sql="select * from person";
        ResultSet rs = u.select(sql);
        while(rs.next()){
            int id = rs.getInt("id");
            String username = rs.getString("username");
            String password = rs.getString("password");
            String name = rs.getString("name");
            String age = rs.getString("age");
            String sex = rs.getString("sex");
            System.out.println(id+" "+username+" "+password+" "+name+" "+age+" "+sex);
        }
    }

    //登录
    public static void denglu(String uname,String paw) throws Exception{
        util u = new util();
        String sql="select * from person where username=? and password=?";
        ResultSet rs = u.select(sql,uname,paw);
        if(rs.next()){
            System.out.println("登录成功");
            aBoolean=true;
            ID= rs.getInt("id");
            NAME=rs.getString("name");
            AGE=rs.getString("age");
            SEX=rs.getString("sex");
        }else{
            System.out.println("登录失败");
            aBoolean=false;
        }
        u.close(rs,null,null);
    }

    //注销
    public static void zhuxiao() throws Exception{
        util u = new util();
        String sql="delete from person where id=?";
        boolean b = u.select1(sql, ID);
        if(b){
            System.out.println("注销失败");
        }else{
            System.out.println("注销成功");
        }

    }

    //修改
    public static void xiugai(String name,String age,String sex) throws Exception{
        util u = new util();
        String sql="update person set name=? , age=? , sex=? where id=?";
        if(name.isEmpty()){
            name=NAME;
        }else{
            NAME=name;
        }
        if(age.isEmpty()){
            age=AGE;
        }else{
            AGE=age;
        }
        if(sex.isEmpty()){
            sex=SEX;
        }else{
            SEX=sex;
        }

        boolean b = u.select2(sql, ID ,name, age, sex);
        if(b){
            System.out.println("修改失败");
        }else{
            System.out.println("修改成功");
        }
    }

    //注册
    public static void zhuce(String username,String password) throws Exception{
        util u = new util();
        String sql="insert into person (username,password) values(?,?)";
        boolean b = u.select1(sql,username,password);
        if(b){
            System.out.println("注册失败");
        }else{
            System.out.println("注册成功");
        }
    }
}

结果截图:

欢迎光临后台用户管理系统
请选择您的服务:1、登录 2、注册 3、退出
2
请输入您的账号
xiao
请输入您的密码
123456
注册成功
请选择您的服务:1、登录 2、注册 3、退出
1
请输入您的账号:
xiao
请输入您的密码:
123456
登录成功
请选择您的服务:1、查询所有 2、修改本条信息 3、注销信息 4、退出
1
1 root 123456 root 11 1
2 test 123456 test 22 0
4 xiao 123456 null null null
请选择您的服务:1、查询所有 2、修改本条信息 3、注销信息 4、退出
2
请输入修改的姓名(不修改可以回车):
youpei
请输入修改的年龄(不修改可以回车)22
请输入修改的性别(不修改可以回车):

修改成功
请选择您的服务:1、查询所有 2、修改本条信息 3、注销信息 4、退出
1
1 root 123456 root 11 1
2 test 123456 test 22 0
4 xiao 123456 youpei 22 null
请选择您的服务:1、查询所有 2、修改本条信息 3、注销信息 4、退出
3
注销成功
账号不存在,返回首页
请选择您的服务:1、登录 2、注册 3、退出
3
成功退出系统

心得体会:

出现的问题:
1、properties文件中不需要加双引号,如果加双引号会导致数据库连接失败;
2、关于insert、delete、update的操作不可以使用prepareStatement的executeQuery方法,会出错,
应该使用execute方法,其中executeQuery返回的是resultset而execute返回值是布尔类型;
3、execute返回值是布尔类型,成功操作返回的是false,反之则是true;
4、PreparedStatement的setString类方法传NULL值到sql失败,可以利用它的setObject方法;
5、于Scanner.nextLine空字符的问题,导致在运行程序时无法在控制台获得录入值,而是直接接收了 一个空字符,可以先用一个nextLine()方法去接收消化掉之前留下的结束符,之后就可以正常录入了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

友培

数据皆开源!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值