首页 > 数据库 >基于Java对数据库的增加和查询操作

基于Java对数据库的增加和查询操作

时间:2024-09-25 19:50:45浏览次数:15  
标签:ps properties Java 数据库 查询 user public conn

 在开始编码前,我们需要先给IDEA配置下面两个jar文件:

第一步:我们先进行数据库的连接

public class DBUtils {
    /**
     * 打开数据库
     */
    //优化:让加载器等操作,只做一次
    public static String driver;//驱动地址
    public static String url;//数据库的地址
    public static String user;//数据库账户
    public static String password;//数据库密码
    static {
        //先用ReadFileUtils.readFile()获取properties文件中的信息
        Properties properties = ReadFileUtils.readFile("web/com/file/db.properties");
        //将获取的信息,填入对应的方式
        driver = properties.getProperty("driver");//连接驱动
        url = properties.getProperty("url");//链接数据库
        user = properties.getProperty("user");//输入数据库的账户
        password = properties.getProperty("password");//输入数据库的密码

        try {
            Class.forName(driver);//创建数据库驱动
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static Connection getConnection(){
        //创建一个空的连接
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(url,user,password);//连接数据库
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;//返回数据库的连接地址
    }

    /**
     * 关闭数据库
     * @param conn
     * @param ps
     * @param rs
     */
    public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs){
        //判断rs中是否有数据库返回地址
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        //判断ps中有没有数据库命令
        if(ps!=null){
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        //判断conn中是否有数据库连接地址
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

使用加载器ClasssLoader进行properties文件的信息读取

package web.com.utils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ReadFileUtils {
    public static Properties readFile(String path){
        //普通Java类利用自身类的类加载器读取外部文件
        InputStream in = ReadFileUtils.class.getClassLoader().getResourceAsStream(path);
        Properties properties = new Properties();
        try {
            properties.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return properties;
    }
}

properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?
user=root
password=root

在Javaweb工程中,我们要经常进行测试,由于没有主函数,所以我们要使用junit.jar工具进行测试,测试函数不能有返回值。

进行数据库连接测试

/**
     * 测试连接数据库
     */
    @Test
    public void test01(){
        Connection connection = DBUtils.getConnection();
        System.out.println(connection);

    }

第二步:进行查询方法的实现

/**
     * 根据用户名查询用户是否存
     * @param username
     * @return
     */
    @Override
    public boolean findUserByUsername(String username) {
        Connection conn = null;//创建一个装数据库连接地址的函数
        PreparedStatement ps = null;//创建一个装数据库命令的函数
        ResultSet rs = null;//创建一个装数据库返回地址的函数
        boolean flag = false;//定义一个逻辑函数,boolean函数,来输出数据库命令运行结果
        conn = DBUtils.getConnection();//生成一个数据库连接地址
        String sql = "select id from user where username=?";//数据库命令
        try {
            //将数据库命令装进ps函数中
            ps = conn.prepareStatement(sql);
            //给数据库命令写入你输入的值
            ps.setString(1,username);
            //执行数据库命令,成功返回数据库返回地址
            rs = ps.executeQuery();
            System.out.println(rs);
            //判断rs是否有值
            while (rs.next()){
                //给逻辑函数附true,表示数据库命令执行成功
                    flag = true;
                    break;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //关闭数据库
        DBUtils.closeAll(conn,ps,rs);
        //返回值为逻辑函数,表示是否执行成功
        return flag;
    }

测试查询方法是否正确

/**
     * 测试查询用户是否存在
     */
    @Test
    public void test02(){
        UserDaoImpl userDao = new UserDaoImpl();
        //执行查询,返回值是逻辑值,false假,true真
        boolean flag = userDao.findUserByUsername("xiao");
        System.out.println("false执行失败,true执行成功");
        System.out.println(flag);

    }

第三步:进行添加方法的代码实现

/**
     * 增加用户
     * @param user
     * @return
     */
    @Override
    public int addUser(User user) {
        Connection conn = null;//创建一个装数据库连接地址的函数
        PreparedStatement ps = null;//创建一个装数据库命令的函数
        int i = 0;
        conn = DBUtils.getConnection();//生成一个数据库连接地址
        //数据库命令
        String sql  = "INSERT INTO USER(username,PASSWORD,gender,age,birthday,address,hobby,remark) VALUES(?,?,?,?,?,?,?,?)";
        try {
            //将数据库命令装进ps函数中
            ps = conn.prepareStatement(sql);
            //给数据库命令写入你输入的值
            ps.setString(1,user.getUsername());
            ps.setString(2,user.getPassword());
            ps.setString(3,user.getGender());
            ps.setInt(4,user.getAge());
            //处理日期时间类型问题
            Date birthday = user.getBirthday();
            java.sql.Date date = new java.sql.Date(birthday.getTime());
            ps.setDate(5,date);
            ps.setString(6,user.getAddress());
            ps.setString(7,user.getHobby());
            ps.setString(8,user.getRemark());
            //执行数据库命令,返回执行成功数
            i = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //关闭数据库
        DBUtils.closeAll(conn,ps,null);
        //返回整形函数i
        return i;
    }

测试添加方法是否正确

/**
     * 测试添加用户
     */
    @Test
    public void test03(){
        UserDaoImpl userDao = new UserDaoImpl();
        //输入要添加的信息
        User user =  new User("wang","123",18,new Date(),"男","成都","篮球,足球","666 ");
        //执行添加命令
        int i = userDao.addUser(user);
        if(i>0){
            System.out.println("添加用户成功1");
        }else{

            System.out.println("添加用户失败1");
        }
    }

标签:ps,properties,Java,数据库,查询,user,public,conn
From: https://blog.csdn.net/m0_69484120/article/details/142526239

相关文章