会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132849个问题

package com.itbaizhan;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

/**
 * 优化获取数据库连接
 */
public class JdbcTest2 {
    public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {

        //老规矩,工具类需要先实例化
        Properties properties=new Properties();

        //实例化结束,拿到输入流对象
        InputStream resourceAsStream = JdbcTest2.class.getClassLoader().getResourceAsStream("jdbc.properties");

        //拿到流对象,读取、并解析
        properties.load(resourceAsStream);


        //这块代码起的作用是什么?
        String url = properties.getProperty("url");            //获取数据库的url
        String name = properties.getProperty("username");      //获取数据库的用户名
        String pwd = properties.getProperty("pwd");            //获取数据库的密码
        String drivername = properties.getProperty("driver");     //获取数据库的驱动全名

        //加载注册驱动
        Class.forName(drivername);

        //通过驱动管理器获取  连接对象
        Connection connection = DriverManager.getConnection(url, name, drivername);
        System.out.println(connection);

    }
}
1、这一块代码存在的意义是什么?上面已经读取和解析了,下面也通过
管理器调用了里面的参数了呀?
2、这个错咋解决?


JAVA 全系列/第三阶段:数据库编程/JDBC技术 1666楼

package com.cx;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 * 使用封装工具
 */
public class jdbcTest2 {
    //向Department表中添加一条数据
    public void insertDeparments(String department_name,int location_id){
        Connection conn = null;
        Statement state = null;
        try {
            //使用封装工具
            conn = jdbcUtil1.getConnection();

            String sql="insert into departments values(default,'"+department_name+"',"+location_id+")";
            state = conn.createStatement();   //通过conn对象调用Connection接口下createStatement方法
            int flag = state.executeUpdate(sql);
            System.out.println(flag);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            jdbcUtil1.closeConnection(conn);
            jdbcUtil1.closeStatment(state);
        }
    }
    //更新departments表中的department_id为6的数据,将部门名称修改为教学不,location_id修改为6
    public  void  updateDepartments(String department_name,int location_id,int department_id){
        Connection conn = null;
        Statement state = null;
        try {
            conn= jdbcUtil1.getConnection();
            state = conn.createStatement();
            String sql = "update departments d set d.department_name = '"+department_name+"',d.location_id ="+location_id+" where d.department_id ="+department_id+"";
            int flag = state.executeUpdate(sql);
            System.out.println(flag);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            jdbcUtil1.closeConnection(conn);
            jdbcUtil1.closeStatment(state);
        }
    }
    //查询Departments表中部门ID为6的部门信息
    public void selectDepartmentsById(int departmentId){
        Connection conn = null;
        Statement state = null;
        ResultSet rs = null;
        try {
            conn = jdbcUtil1.getConnection();
            state = conn.createStatement();
            String sql = "select * from departments d where d.department_id = "+departmentId;
            //执行查询返回结果
            rs = state.executeQuery(sql);
            while (rs.next()){
                int a = rs.getInt("department_id");
                String s = rs.getString("department_name");
                int b = rs.getInt(3);
                System.out.println(a+" "+s+" "+b);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            jdbcUtil1.closeConnection(conn);
            jdbcUtil1.closeStatment(state);
            jdbcUtil1.closeResultSet(rs);
        }
    }

    public static void main(String[] args) {
        jdbcTest2 test2 = new jdbcTest2();
        //test.insertDeparments("工程部",6);
       // test.updateDepartments("研发",6,8);
        test2.selectDepartmentsById(6);
    }
   
}
package com.cx;


import java.sql.*;
import java.util.ResourceBundle;

/**
 * 封装jdbc工具类
 */
public class jdbcUtil1 {
    private static String driver;
    private static String jdbcUrl;
    private static String username;
    private static String userpassword;
    static {
        ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
        driver=bundle.getString("driver");
        jdbcUrl= bundle.getString("jdbcUrl");
        username=bundle.getString("username");
        userpassword=bundle.getString("userpassword");
        try {
            Class.forName(driver);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    //获取Connection对象
    public static Connection getConnection() {
        Connection conn = null;
        try {
            //获取连接
            conn = DriverManager.getConnection(jdbcUrl,username,userpassword);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
    //关闭Statement
    public static void closeStatment(Statement state){
        try {
            if (state != null){
                state.close();
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
    //关闭Connection
    public static void closeConnection(Connection conn){
        try {
            if (conn != null){
                conn.close();
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
    //关闭
    public  static void closeResultSet(ResultSet rs){
        try {
            if (rs != null){
                rs.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
driver="com.mysql.jdbc.Driver"
jdbcUrl ="jdbc:mysql://localhost:3306/caixx?useUnicode=true&usecharacterEncoding=utf-8&useSSL=false"
username="root"
userpassword="root"


发现使用properties就会报错

image.png


不使用properties就正常, IDEA到底如何使用这个?

JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 1667楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 1668楼
JAVA 全系列/第三阶段:数据库编程/Oracle 数据库的使用 1669楼
JAVA 全系列/第三阶段:数据库编程/SQL 语言 1670楼
JAVA 全系列/第三阶段:数据库编程/Oracle 数据库的使用 1671楼
JAVA 全系列/第三阶段:数据库编程/Oracle 数据库的使用 1673楼
JAVA 全系列/第三阶段:数据库编程/Oracle 数据库的使用 1674楼

在执行插入操作时,数据库中的location_id一直是0,运行程序也没报错

图片.png

代码如下

持久层接口:

package com.bjsxt.dao;

import java.util.List;

import com.bjsxt.pojo.Departments;

public interface DepartmentsDao {
    
    public List<Departments> selectDeptByname(String deptName);
    public void insertDept(Departments dept);
    

}

接口实现类:

package com.bjsxt.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.bjsxt.commons.JdbcUtil;
import com.bjsxt.dao.DepartmentsDao;
import com.bjsxt.pojo.Departments;

public class DepartmentsDaoImpl implements DepartmentsDao {


    @Override
    public void insertDept(Departments dept) {
        Connection conn=null;
        PreparedStatement ps = null;
        try {
            conn = JdbcUtil.getConnection();
            conn.setAutoCommit(false);
            ps = conn.prepareStatement("insert into departments values(default,?,?)");
            ps.setString(1, dept.getDepartmentName());
            ps.setInt(2, dept.getDepartmentId());
            ps.execute();
            conn.commit();
        }catch(Exception e) {
            e.printStackTrace();
            JdbcUtil.rollback(conn);
        }finally {
            JdbcUtil.closeResource(ps, conn, null);
        }

    }

}

业务层接口:

package com.bjsxt.service;

import com.bjsxt.pojo.Departments;

public interface DepartmentsService {

    public void addDepartments(Departments dept);
}

接口实现类

package com.bjsxt.service.impl;

import com.bjsxt.dao.DepartmentsDao;
import com.bjsxt.dao.impl.DepartmentsDaoImpl;
import com.bjsxt.pojo.Departments;
import com.bjsxt.service.DepartmentsService;

public class DepartmentsServiceImpl implements DepartmentsService {

    @Override
    public void addDepartments(Departments dept) {
        DepartmentsDao deptDao = new DepartmentsDaoImpl();
        deptDao.insertDept(dept);
    }

}

测试类:

package com.bjsxt.test;

import com.bjsxt.pojo.Departments;
import com.bjsxt.service.DepartmentsService;
import com.bjsxt.service.impl.DepartmentsServiceImpl;

public class Test {
    public static void main(String[] args) {
        Departments dept = new Departments();
        dept.setDepartmentName("后勤部11");
        dept.setLocationId(5);
        DepartmentsService ds = new DepartmentsServiceImpl();
        ds.addDepartments(dept);
    }
}

源码:

jdbcDemo2.zip


JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 1677楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 1679楼
JAVA 全系列/第三阶段:数据库编程/Oracle 数据库的使用 1680楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637