会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132358个问题
JAVA 全系列/第三阶段:数据库编程/Oracle 数据库的使用 1786楼
JAVA 全系列/第三阶段:数据库编程/Oracle 数据库的使用 1787楼

老师, 请问一下, 我按照视频中的方法加载"db.properties"文件到输入流, 但是输入流是null.. 请看:


DBUtil.JAVA文件截图:


123.png


代码:

package com.yuanzhao.dbutil;

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


public class DBUtil {
	private static String url;
	private static String user;
	private static String password;
	
	static {
		try {
			Properties prop = new Properties();
			
			// 创建文件输入流
			InputStream is = DBUtil.class.getClassLoader().getResourceAsStream("db.properties");
			
			//测试输出
			System.out.println(is);
			
			// 加载配置文件
			prop.load(is);
					
			url = prop.getProperty("jdbc.url").trim();
			user = prop.getProperty("jdbc.username").trim();
			password = prop.getProperty("jdbc.password").trim();
		} catch (IOException e) {
			e.printStackTrace();
			
		}
	}
	
	public static Connection getConn() {
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(url, user, password);
		} catch (SQLException e) {
			System.out.println("DBUtil.getConn(连接创建失败, 请检查[url]:" + url + ", [user]:" + user + ", [password]:" + password + ")");
		}
		return conn;
	}

	public static Statement getStatement(Connection conn) {
		Statement statement = null;
		try {
			statement = conn.createStatement();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return statement;
	}

	public static PreparedStatement getStatement(Connection conn, String sql) {
		PreparedStatement preparedStatement = null;
		try {
			preparedStatement = conn.prepareStatement(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return preparedStatement;
	}

	public static void bindParam(PreparedStatement preparedStatement, Object... params) {
		try {
			for (int i = 0; i < params.length; i++) {
				preparedStatement.setObject((i + 1), params[i]);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

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

		if (statement != null) {
			try {
				statement.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}


源代码打包:

MyPro0305.zip


JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 1790楼

com.bjsxtjava.sql.Connectionjava.sql.DriverManagerjava.sql.SQLExceptionjava.sql.StatementJdbcTest {
    (String department_namelocation_id){
        Connection conn = Statement statement = {
            Class.()conn =
            DriverManager.()String sql = +department_name++location_id+statement = conn.createStatement()i = statement.executeUpdate(sql)System..println(i)} (Exception e) {
            e.printStackTrace()}{
            (statement!=){
                {
                    statement.close()} (SQLException e) {
                    e.printStackTrace()}
            }

            (conn!=){
                {
                    conn.close()} (SQLException e) {
                    e.printStackTrace()}
            }
        }
    }
    (String[] args) {
        JdbcTest jdbc = JdbcTest()jdbc.insertDepartments()}
}


按照视频来的,怎么有这个错误

Fri Oct 16 00:23:35 CST 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '8)' at line 1

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)

at com.mysql.jdbc.Util.getInstance(Util.java:408)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2491)

at com.mysql.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1552)

at com.mysql.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2607)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1480)

at com.bjsxt.JdbcTest.insertDepartments(JdbcTest.java:23)

at com.bjsxt.JdbcTest.main(JdbcTest.java:49)


Process finished with exit code 0


怎么解

JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 1792楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 1793楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 1794楼
JAVA 全系列/第三阶段:数据库编程/SQL 语言 1796楼
JAVA 全系列/第三阶段:数据库编程/SQL 语言 1797楼

为什么工具类无法初始化,查了几次代码都找不到原因?

工具类

package com.bjsxt.commns;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;

/**
 * jdbc工具类
 * @author Administrator
 *
 */
public class JdbcUtil {
	private static String driver;
	private static String jdbcUrl;
	private static String username;
	private static String userpassword;
	static{
		//读取Properties文件
		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 (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	//获取Connection对象
	public static Connection getConnection(){
		Connection conn = null;
		try {
		 conn =	DriverManager.getConnection(jdbcUrl, username, userpassword);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
		
	}
	//关闭Statement
	public static void closeStatement(Statement state){
			try {
				if(state != null){
					state.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
	}
	//关闭Connection
	public static void closeConnection(Connection conn){
		try {
			if(conn != null){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	//关闭资源
	public static void closeResource(Statement state,Connection conn,ResultSet rs){
		closeStatement(state);
		closeConnection(conn);
		closeResultSet(rs);
	}
	//关闭ResultSet连接
	public static void closeResultSet(ResultSet rs){
		try {
			if(rs != null){
				rs.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	//事务回滚
	public static void rollback(Connection conn){
		try {
			if(conn != null){
				conn.rollback();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

模型层:

package com.bjsxt.pojo;

public class Departments {
	private String departmentName;
	private int location;
	private int departmentId;
	public String getDepartmentName() {
		return departmentName;
	}
	public void setDepartmentName(String departmentName) {
		this.departmentName = departmentName;
	}
	public int getLocation() {
		return location;
	}
	public void setLocation(int location) {
		this.location = location;
	}
	public Departments() {
		super();
		// TODO Auto-generated constructor stub
	}
	public int getDepartmentId() {
		return departmentId;
	}
	public void setDepartmentId(int departmentId) {
		this.departmentId = departmentId;
	}


}

持久层:


接口

package com.bjsxt.dao.impl;

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.commns.JdbcUtil;
import com.bjsxt.pojo.Departments;

public class DepartmentsDaoImpl implements DepartmentsDao{
@Override
public List<Departments> selectDeptByName(String departmentName) {
	Connection conn = null;
	PreparedStatement ps = null;
	ResultSet rs = null;
	List<Departments> list = new ArrayList<>();
	try{
		conn = JdbcUtil.getConnection();
		ps = conn.prepareStatement("select * from departments where department_name=?");
		ps.setString(1, departmentName);
		rs = ps.executeQuery();
		while(rs.next()){
			Departments d = new Departments();
			d.setDepartmentId(rs.getInt("department_id"));
			d.setDepartmentName(rs.getString("departmentName"));
			d.setLocation(rs.getInt("location_id"));
			list.add(d);
		}
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		JdbcUtil.closeResource(ps, conn, rs);;
	}
	return list;
}

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


}

业务层:

接口

package com.bjsxt.server.impl;

import java.util.List;

import com.bjsxt.pojo.Departments;

public interface DepartmentsService {
	public void addDepartments(Departments dept);


}

实现类

package com.bjsxt.server.impl;

import java.util.List;

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

public class DepartmentsServiceImpl implements DepartmentsService {

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



}

测试层

package com.bjsxt.text;

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

public class Test {

	public static void main(String[] args) {
		Departments dept = new Departments();
		dept.setDepartmentName("数学部2");
		dept.setLocation(20);
		DepartmentsService ds = new DepartmentsServiceImpl();
		ds.addDepartments(dept);
	}

}

运行图片:

image.png

jdbcDemp2.rar


JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 1798楼
JAVA 全系列/第三阶段:数据库编程/MySQL数据库的使用 1799楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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