【JDBC】基础简单练习(二)

创建配置文件

idea怎么创建properties文件

文件内容

driverName = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbURL=jdbc:sqlserver://localhost:1433;databaseName=EDBC
userName = sa
userPwd = 123456

在这里插入图片描述

类加载器 读取配置文件
注意:jdbc.properties配置文件要放在src目录下

package com.su;

import java.io.*;
import java.lang.reflect.Field;
import java.util.Properties;


public class test {
    public static void main(String[] args) throws IOException {
        //通过类加载器将配置文件加载进来
        InputStream inputStream = test.class.getClassLoader().getResourceAsStream("jdbc.properties");
        Properties properties = new Properties();
        properties.load(inputStream);

        inputStream.close();

        //获取配置文件内容
        String dbURL = properties.getProperty("dbURL");
        String userName = properties.getProperty("userName");
        String userPwd = properties.getProperty("userPwd");
        String driverName = properties.getProperty("driverName");

        System.out.println("用户名:"+userName);
        System.out.println("密码:"+userPwd);


    }


}

JDBCUtils类

不用每次都要重写注册驱动和获取数据库连接对象和释放资源的代码,全部封装在此类中。

package domain;

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

public class JDBCUtils {
    private static String dbURL;
    private static String userName;
    private static String userPwd;
    private static String driverName;
    static {
        //静态代码块,只会执行一次,读取文件,获取值

        try{
            Properties pro = new Properties();

            //获取src路径下的文件的方式---->classloader类加载器
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            URL resource = classLoader.getResource("jdbc.properties");
            String path = resource.getPath();
            pro.load(new FileReader(path));

            dbURL = pro.getProperty("dbURL");
            userName = pro.getProperty("userName");
            userPwd = pro.getProperty("userPwd");
            driverName = pro.getProperty("driverName");
            System.out.println(driverName);
            Class.forName(driverName);

        }catch (IOException e){
            e.printStackTrace();
        }catch (ClassNotFoundException e){
            e.printStackTrace();
        }



    }

    public static Connection getConnection() throws SQLException{
            return DriverManager.getConnection(dbURL,userName,userPwd);


    }
    public static void close(Statement stat,Connection conn){
        if(stat != null){
            try{
                stat.close();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
        if(conn != null){
            try{
                conn.close();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }

    }
    public static void close(ResultSet resultSet,Statement stat,Connection conn){
        if(resultSet != null){
            try{
                resultSet.close();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
        if(stat != null){
            try{
                stat.close();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
        if(conn != null){
            try{
                conn.close();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }

    }


}

学生类:

package domain;

public class Student {
    private String sno,sname,ssex,slsNO,saddr,sdept;
    private double sage,height;

    public Student(String sno, String sname, String ssex, String slsNO, String saddr, String sdept, double sage, double height) {
        this.sno = sno;
        this.sname = sname;
        this.ssex = ssex;
        this.slsNO = slsNO;
        this.saddr = saddr;
        this.sdept = sdept;
        this.sage = sage;
        this.height = height;
    }

    @Override
    public String toString() {
        return "Student{" +
                "sno='" + sno + '\'' +
                ", sname='" + sname + '\'' +
                ", ssex='" + ssex + '\'' +
                ", slsNO='" + slsNO + '\'' +
                ", saddr='" + saddr + '\'' +
                ", sdept='" + sdept + '\'' +
                ", sage=" + sage +
                ", height=" + height +
                '}';
    }

    public String getSno() {
        return sno;
    }

    public void setSno(String sno) {
        this.sno = sno;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getSsex() {
        return ssex;
    }

    public void setSsex(String ssex) {
        this.ssex = ssex;
    }

    public String getSlsNO() {
        return slsNO;
    }

    public void setSlsNO(String slsNO) {
        this.slsNO = slsNO;
    }

    public String getSaddr() {
        return saddr;
    }

    public void setSaddr(String saddr) {
        this.saddr = saddr;
    }

    public String getSdept() {
        return sdept;
    }

    public void setSdept(String sdept) {
        this.sdept = sdept;
    }

    public double getSage() {
        return sage;
    }

    public void setSage(double sage) {
        this.sage = sage;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }
}

StudentDao类:

package domain;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class StudentDao {
    public static void main(String[] args) {
        List<Student> list = findAll();
        for (Student student : list) {
            System.out.println(student);
        }
    }
    public  static List<Student> findAll(){ //查询所有学生对象
        List<Student> list = new ArrayList<>();
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try{
            connection = JDBCUtils.getConnection();
            String sql = "select * from student";
            statement = connection.createStatement();
            resultSet = statement.executeQuery(sql);
            String sno,sname,ssex,slsNO,saddr,sdept;
            double sage,height;

            while(resultSet.next()){
                sno = resultSet.getString(1);
                sname = resultSet.getString(2);
                ssex = resultSet.getString(3);
                slsNO = resultSet.getString(4);
                saddr = resultSet.getString(5);
                sage = resultSet.getDouble(6);
                height = resultSet.getDouble(7);
                sdept = resultSet.getString(8);
                Student student = new Student(sno, sname, ssex, slsNO, saddr, sdept, sage, height);
                list.add(student);

            }
        }catch (SQLException e){
            e.printStackTrace();
        }
        finally {
            JDBCUtils.close(resultSet,statement,connection);
        }




        return list;

    }

}

在这里插入图片描述

通过键盘录入用户名和密码,判断用户是否登录成功,如果成功,则提示成功,失败则提示失败

创建数据库表usr:

create table usr(
	id int primary key identity(1,1),--表示从1开始递增,每次自增一
	userName varchar(32),
	pwd varchar(32)
)

插入两条记录

insert into usr values('张三','123');
insert into usr values('李四','234');

在这里插入图片描述

package Demo;

import domain.JDBCUtils;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class UsrDao {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入用户名:");
        String usrName = sc.nextLine();
        System.out.print("请输入密码:");
        String pwd = sc.nextLine();
        boolean flag = login(usrName,pwd);
        if(flag){
            System.out.println("登录成功");
        }else{
            System.out.println("用户名或密码错误");
        }
    }
    public static boolean login(String userName,String pwd){
        if(userName == null && pwd == null){
            return false;
        }
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        //快捷键【CTRL+ALT+T】,生成try catch
        try {
            connection = JDBCUtils.getConnection();

            String sql = "select * from usr where userName = '"+userName+"' " +
                    "and pwd = '"+pwd+"' ";
            System.out.println(sql);
            statement = connection.createStatement();
            resultSet = statement.executeQuery(sql);
            return resultSet.next();//如果有值返回true
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally {
            JDBCUtils.close(resultSet,statement,connection);
        }
        return false;
    }

}


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package Demo;

import domain.JDBCUtils;

import java.sql.*;
import java.util.Scanner;

public class UsrDao {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入用户名:");
        String usrName = sc.nextLine();
        System.out.print("请输入密码:");
        String pwd = sc.nextLine();
        boolean flag = login(usrName,pwd);
        if(flag){
            System.out.println("登录成功");
        }else{
            System.out.println("用户名或密码错误");
        }
    }
    public static boolean login(String userName,String pwd){
        if(userName == null && pwd == null){
            return false;
        }
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        //快捷键【CTRL+ALT+T】,生成try catch
        try {
            connection = JDBCUtils.getConnection();

            String sql = "select * from usr where userName = ? and pwd = ?";
            System.out.println(sql);
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1,userName);
            preparedStatement.setString(2,pwd);
            resultSet = preparedStatement.executeQuery();
            return resultSet.next();//如果有值返回true
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally {
            JDBCUtils.close(resultSet,preparedStatement,connection);
        }
        return false;
    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值