连接数据库步骤:(以MySql为例)
1.注册驱动:Class.forName("com.mysql.jdbc.Driver");
2.建立连接:Connection conn = DriverManager.getConnection( url , user , password );
url格式: jdbc:子协议:子名称://主机名:端口/数据库名?属性名=属性值&...
String url = "jdbc:mysql://localhost:3306/jdbc";
// 若主机名及端口号均为缺省值,则可省略掉,如String url = "jdbc:mysql:///jdbc";
3.创建语句:PreparedStatement
4.执行语句:executeQuery(), executeUpdate()
5.返回结果:ResultSet
6.释放资源:
PreparedStatement相对于Statement的优势:
1.没有SQL注入的问题
2.Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出
3.数据库和驱动可以对PreparedStatement进行优化(只有在相关联的数据库连接没有关闭的情况下有效)
数据库连接池概念:
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
使用数据源和JNDI API:
1.Java EE 应用程序服务器提供了命名空间,可以使用 JNDI API 来访问命名空间。
2.Java EE 应用程序服务器必须支持在 JNDI 命名空间中存储数据源资源。
3.数据源是封装连接数据库的所需信息的对象:
A.数据库 URL
B.驱动程序
C.用户名和密码
4.大部分服务器提供了使用数据源访问的数据库连接池。
在tomcat中配置JNDI步骤:
1.找到tomcat中server.xml文件,在其中加入以下代码
Server.xml
<Context path="/ViewDemo">
<Resource
name="jdbc/leagueDB"
type="javax.sql.DataSource"
driverClassName="org.gjt.mm.mysql.Driver"
maxIdle="2"
maxWait="5000"
username="root"
password="root123"
url="jdbc:mysql://localhost/league"
maxActive="4"/>
</Context> 2.在项目的web.xml文件中,加入以下代码:
web.xml
<resource-ref>
<description>
This defines a JNDI resource reference for
java:comp/env/jdbc/leagueDB DataSource which
is formally declared in the domain.xml.
</description>
<res-ref-name>jdbc/leagueDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> 3.将JDBC驱动放入tomcat/lib目录当中
有连接池的情况下,connection.close()不是关闭连接,而是将连接设置为available状态。