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

打印 上一主题 下一主题

主题 830|帖子 830|积分 2490

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

第一步:我们先进行数据库的毗连
  1. public class DBUtils {
  2.     /**
  3.      * 打开数据库
  4.      */
  5.     //优化:让加载器等操作,只做一次
  6.     public static String driver;//驱动地址
  7.     public static String url;//数据库的地址
  8.     public static String user;//数据库账户
  9.     public static String password;//数据库密码
  10.     static {
  11.         //先用ReadFileUtils.readFile()获取properties文件中的信息
  12.         Properties properties = ReadFileUtils.readFile("web/com/file/db.properties");
  13.         //将获取的信息,填入对应的方式
  14.         driver = properties.getProperty("driver");//连接驱动
  15.         url = properties.getProperty("url");//链接数据库
  16.         user = properties.getProperty("user");//输入数据库的账户
  17.         password = properties.getProperty("password");//输入数据库的密码
  18.         try {
  19.             Class.forName(driver);//创建数据库驱动
  20.         } catch (ClassNotFoundException e) {
  21.             e.printStackTrace();
  22.         }
  23.     }
  24.     public static Connection getConnection(){
  25.         //创建一个空的连接
  26.         Connection conn = null;
  27.         try {
  28.             conn = DriverManager.getConnection(url,user,password);//连接数据库
  29.         } catch (SQLException e) {
  30.             e.printStackTrace();
  31.         }
  32.         return conn;//返回数据库的连接地址
  33.     }
  34.     /**
  35.      * 关闭数据库
  36.      * @param conn
  37.      * @param ps
  38.      * @param rs
  39.      */
  40.     public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs){
  41.         //判断rs中是否有数据库返回地址
  42.         if(rs!=null){
  43.             try {
  44.                 rs.close();
  45.             } catch (SQLException e) {
  46.                 e.printStackTrace();
  47.             }
  48.         }
  49.         //判断ps中有没有数据库命令
  50.         if(ps!=null){
  51.             try {
  52.                 ps.close();
  53.             } catch (SQLException e) {
  54.                 e.printStackTrace();
  55.             }
  56.         }
  57.         //判断conn中是否有数据库连接地址
  58.         if(conn!=null){
  59.             try {
  60.                 conn.close();
  61.             } catch (SQLException e) {
  62.                 e.printStackTrace();
  63.             }
  64.         }
  65.     }
  66. }
复制代码
使用加载器ClasssLoader进行properties文件的信息读取
  1. package web.com.utils;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.util.Properties;
  5. public class ReadFileUtils {
  6.     public static Properties readFile(String path){
  7.         //普通Java类利用自身类的类加载器读取外部文件
  8.         InputStream in = ReadFileUtils.class.getClassLoader().getResourceAsStream(path);
  9.         Properties properties = new Properties();
  10.         try {
  11.             properties.load(in);
  12.         } catch (IOException e) {
  13.             e.printStackTrace();
  14.         }
  15.         return properties;
  16.     }
  17. }
复制代码
properties文件
  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc:mysql://localhost:3306/test?
  3. user=root
  4. password=root
复制代码

在Javaweb工程中,我们要经常进行测试,由于没有主函数,所以我们要使用junit.jar工具进行测试,测试函数不能有返回值。
进行数据库毗连测试
  1. /**
  2.      * 测试连接数据库
  3.      */
  4.     @Test
  5.     public void test01(){
  6.         Connection connection = DBUtils.getConnection();
  7.         System.out.println(connection);
  8.     }
复制代码
第二步:进行查询方法的实现
  1. /**
  2.      * 根据用户名查询用户是否存
  3.      * @param username
  4.      * @return
  5.      */
  6.     @Override
  7.     public boolean findUserByUsername(String username) {
  8.         Connection conn = null;//创建一个装数据库连接地址的函数
  9.         PreparedStatement ps = null;//创建一个装数据库命令的函数
  10.         ResultSet rs = null;//创建一个装数据库返回地址的函数
  11.         boolean flag = false;//定义一个逻辑函数,boolean函数,来输出数据库命令运行结果
  12.         conn = DBUtils.getConnection();//生成一个数据库连接地址
  13.         String sql = "select id from user where username=?";//数据库命令
  14.         try {
  15.             //将数据库命令装进ps函数中
  16.             ps = conn.prepareStatement(sql);
  17.             //给数据库命令写入你输入的值
  18.             ps.setString(1,username);
  19.             //执行数据库命令,成功返回数据库返回地址
  20.             rs = ps.executeQuery();
  21.             System.out.println(rs);
  22.             //判断rs是否有值
  23.             while (rs.next()){
  24.                 //给逻辑函数附true,表示数据库命令执行成功
  25.                     flag = true;
  26.                     break;
  27.             }
  28.         } catch (SQLException e) {
  29.             e.printStackTrace();
  30.         }
  31.         //关闭数据库
  32.         DBUtils.closeAll(conn,ps,rs);
  33.         //返回值为逻辑函数,表示是否执行成功
  34.         return flag;
  35.     }
复制代码
测试查询方法是否正确
  1. /**
  2.      * 测试查询用户是否存在
  3.      */
  4.     @Test
  5.     public void test02(){
  6.         UserDaoImpl userDao = new UserDaoImpl();
  7.         //执行查询,返回值是逻辑值,false假,true真
  8.         boolean flag = userDao.findUserByUsername("xiao");
  9.         System.out.println("false执行失败,true执行成功");
  10.         System.out.println(flag);
  11.     }
复制代码
第三步:进行添加方法的代码实现
  1. /**
  2.      * 增加用户
  3.      * @param user
  4.      * @return
  5.      */
  6.     @Override
  7.     public int addUser(User user) {
  8.         Connection conn = null;//创建一个装数据库连接地址的函数
  9.         PreparedStatement ps = null;//创建一个装数据库命令的函数
  10.         int i = 0;
  11.         conn = DBUtils.getConnection();//生成一个数据库连接地址
  12.         //数据库命令
  13.         String sql  = "INSERT INTO USER(username,PASSWORD,gender,age,birthday,address,hobby,remark) VALUES(?,?,?,?,?,?,?,?)";
  14.         try {
  15.             //将数据库命令装进ps函数中
  16.             ps = conn.prepareStatement(sql);
  17.             //给数据库命令写入你输入的值
  18.             ps.setString(1,user.getUsername());
  19.             ps.setString(2,user.getPassword());
  20.             ps.setString(3,user.getGender());
  21.             ps.setInt(4,user.getAge());
  22.             //处理日期时间类型问题
  23.             Date birthday = user.getBirthday();
  24.             java.sql.Date date = new java.sql.Date(birthday.getTime());
  25.             ps.setDate(5,date);
  26.             ps.setString(6,user.getAddress());
  27.             ps.setString(7,user.getHobby());
  28.             ps.setString(8,user.getRemark());
  29.             //执行数据库命令,返回执行成功数
  30.             i = ps.executeUpdate();
  31.         } catch (SQLException e) {
  32.             e.printStackTrace();
  33.         }
  34.         //关闭数据库
  35.         DBUtils.closeAll(conn,ps,null);
  36.         //返回整形函数i
  37.         return i;
  38.     }
复制代码
测试添加方法是否正确
  1. /**
  2.      * 测试添加用户
  3.      */
  4.     @Test
  5.     public void test03(){
  6.         UserDaoImpl userDao = new UserDaoImpl();
  7.         //输入要添加的信息
  8.         User user =  new User("wang","123",18,new Date(),"男","成都","篮球,足球","666 ");
  9.         //执行添加命令
  10.         int i = userDao.addUser(user);
  11.         if(i>0){
  12.             System.out.println("添加用户成功1");
  13.         }else{
  14.             System.out.println("添加用户失败1");
  15.         }
  16.     }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

祗疼妳一个

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表