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

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

时间:2024-09-25 19:50:45浏览次数:10  
标签: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

相关文章

  • Java中集合泛型的学习
    集合遍历目录集合遍历泛型的基本概念泛型的好处泛型的使用1.泛型类2.泛型接口3.泛型方法Java集合框架中的泛型泛型通配符Java集合泛型是JavaSE1.5(Java5)中引入的一个重要特性,它允许在定义类、接口和方法时指定一个或多个类型参数。这些类型参数在实例化或调用时会被具体的......
  • Java毕业设计-基于SSM框架的校园失物招领平台系统项目实战(附源码+论文)
    大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。......
  • Java毕业设计-基于SSM框架的网上奶茶店系统项目实战(附源码+论文)
    大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。......
  • 快速部署MySQL数据库
    一.下载对应的软件版本下载地址:http://mirrors.sohu.com/mysql/MySQL-5.6/备用地址:http://ftp.ntu.edu.tw/pub/MySQL/Downloads/[root@localhost~]#wget-qhttp://mirrors.sohu.com/mysql/MySQL-5.6/sql-5.6.36-linux-glibc2.5-x86_64.tar.gz二、解压、配置用户和权限[root@loca......
  • Java中CountDownLatch和CyclicBarrier的区别与详解
    Java中CountDownLatch和CyclicBarrier的区别与详解一.CountDownLatch和CyclicBarrier的区别CountDownLatch的计数器是大于或等于线程数的,而CyclicBarrier是一定等于线程数CountDownLatch放行由其他线程控制而CyclicBarrier是由本身来控制的二.详解CountDownLatch说明:一......
  • javascript向数组添加元素
    javascript向数组添加元素,比较常用的是两种方法,一种是向数组后面添加元素,一种是在数组前面添加元素。向数组后面添加元素,一般用push语句,它返回的是添加新元素之后的数组长度。push语法格式是数组名.push('要添加的数组元素')比如有一个数组名字叫arr,要向数组后面添加一个'g......
  • 架构师日记-从数据库发展历程到数据结构设计探析
    一数据库发展史起初,数据的管理方式是文件系统,数据存储在文件中,数据管理和维护都由程序员完成。后来发展出树形结构和网状结构的数据库,但都存在着难以扩展和维护的问题。直到七十年代,关系数据库理论的提出,以表格形式组织数据,数据之间存在关联关系,具有了良好的结构化和规范化特......
  • Reis数据库及key的操作命令汇总
    管理命令命令含义BGREWRITEAOF异步执行一个AOF(AppendOnlyFile)文件重写操作BGSAVE在后台异步保存当前数据库的数据到磁盘CLIENT关闭客户端连接CLIENTLIST获取连接到服务器的客户端连接列表CLIENTGETNAME获取连接的名称CLIENTPAUSE在指定时间内终止运行来自客户端的命......
  • 查询YOLO标签共有几类。针对文件夹中所有的xml文件,查询一下xml文件中object下的name共
    importosimportxml.etree.ElementTreeasETdefcount_object_names(folder_path):#存放不同name的集合names_set=set()#遍历文件夹中的所有文件forfilenameinos.listdir(folder_path):iffilename.endswith('.xml'):#确保处理......
  • unity调用java静态方法
    在Unity中调用Java静态方法通常需要通过Android插件实现。以下是基本步骤:创建Java类:在AndroidStudio中创建一个Java类,包含静态方法。packagecom.example.myplugin;publicclassMyJavaClass{publicstaticStringmyStaticMethod(){return"Hello......