一位Java初学者,已经是三十出头的大龄人,出于对Java编程的爱好,出于对编程大神的敬仰,正在自己的学习路上奔走。前路漫漫,愿有一位导师能指引前行!
一、连接数据库的说明
在Java中,使用JDBC连接数据库的步骤有四步:
1、加载数据库驱动:Class.forName("数据库驱动");
2、获取数据库连接:Connection conn=DriverManager.getConnection(url,username,password)。这里以MySQL数据库为例,url需要做如下设置:jdbc:mysql://localhost:3306/数据库实例?useSSL=false&serverTimezone=UTC)
3、执行增删改查:
①预编译查询语句:PreparedStatement pr=conn.preparedStatement(sql);
②执行增删改查:pr.executeQuery(),pr.executeUpdate();
4、关闭资源:
①关闭操作:pr.close();
②关闭连接:conn.close()
也就是说,每个用于的每个操作都需要执行以上四步,当足够多的用户产生足够多的操作时,就会对数据库产生极大的压力。那么,一个专门保存着数据库连接的公共的空间就可以很好的解决这个弊端,这个空间我们称之为数据库连接池。
二、IDEA配置数据源的方法
在自己实操前,在网络上搜索过,方法都不一样,但是实话说,只有自己实际操作过,才有真正的发言权,在操作的过程中,你会遇到很多网络上没有的问题。下面讲讲自己的实际操作
1、在IDEA中的file→ProjectStructure对话框(ctrl+alt+shift+s),找到Facets,添加路径。在这里添加后,就会在项目的web文件夹下自动生成一个META-INF,里面保存着context.xml文件,这里就是用来配置数据库连接池的地方。
2、打开META-INF中的context.xml文件,配置数据源。数据库的连接池是由对象DataSource进行管理的,在配置数据源时,是包围在标签中的。
这里需要特别说明的一点的是,数据库连接的url的“useSSL=false;serverTimezone=UTC”部分在JDBC连接时,中间的分号(;)是写成&的,这里写成分号,是因为如果写成&,tomcat在启动是会出现一个错误。
name="mysqlDatasource"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="3"
maxWait="10000"
username=""
password=""
driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/?useSSL=false;serverTimezone=UTC"
/>
分号写成&的报错信息
3、打开web.xml配置引用
mysqlDatasource
mysqlDatasource
javax.sql.DataSource
Container
4、第2步和第3步结束后,需要将连接数据库的包放入web目录下的lib文件加,并加入到library中。
三、数据源的测试
public static Connection getConnection() {
try {
//初始化名称查找上下文,产生的对象可以操作Context的配置文件Context ctx = new InitialContext();
//通过JNDI名称找到Datasource,对名称进行定位:java:comp/env+Datasource名称DataSource ds=(DataSource) ctx.lookup("java:comp/env/mysqlDatasource");
//通过Datasource获取连接池的一个连接conn = ds.getConnection();
System.out.println("获取连接成功");
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e){
e.printStackTrace();
}
return conn;
}
在以上的操作都完成后,其实我的数据源实际还是没办法用的,在测试是出现了一个错误,找了好久的资料还是没能解决,也希望知乎大神能献策。感谢大家!发生的错误如下: