JSP与数据库的连接总结
通过近一学期的Java Web 学习总算对其有所了解。其中涉及到连接数据库的方法有四五种之多,为了回顾复习各方法和帮助其他有兴趣的同仁学习,查看。现我将其个方法总结归纳如下:
注:这里我采用的是SQL Server 2005数据库,用户名:sa,密码:123,数据库名:MySchool。
1. JDBC连接数据库:
² 导入Sql 2005的数据库驱动包。
² 把JDBC驱动类装载入java虚拟机中:如Class.forName(“jdbc驱动类的名称”)
² 加载驱动:
Connection conn = DriverManager.getConnection(数据库连接字符串,数据库用户名,数据库用户密码);
示例如下:
public final static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; // 数据库驱动
public final static String url = "jdbc:sqlserver://localhost:1433;DataBaseName=messageBoard"; // url
public final static String dbName = "sa"; // 数据库用户名public final static String dbPass = "123"; // 数据库用户名密码
Class.forName(driver); //注册驱动
Connection conn = DriverManager .getConnection(url,dbName,dbPass); //获得数据库连接并返回
正如示例所示:最好将数据库驱动,url,数据库用户名,数据库用户名密码
定义成常量。
2. 数据库连接池
数据库连接池:主要负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不再是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接,以避免因为没有释放数据库连接池而引起的数据库连接遗漏。
数据库连接池搭建步骤:
1) 配置context.xml文件(在tomcat安装目录conf文件夹下)
<Context>
…
<Resource name=”jdbc/ MySchool” auth="Container"
type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000"
username="sa" password="123"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433; DatabaseName= MySchool "
/>
</Context>
其中各参数的含义在这里就不多说了。
2).配置web.xml文件
<resource-ref>
<description>car</description>
<res-ref-name>jdbc/ MySchool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
这里的<res-ref-name>jdbc/car</res-ref-name>必须与context.xml文件中的name属性值完全相同。
3).编写代码
…
Connection conn = null;
try {
//数据库连接池
Context ic = new InitialContext();
DataSource source = (DataSource) ic.lookup("java:comp/env/jdbc/ MySchool");
conn = source.getConnection();
e.printStackTrace();
…
这里的ic.lookup("java:comp/env/jdbc/ MySchool")中的jdbc/car必须与配置文件中的相同。
4). 将相关数据库的驱动加入到tomcat安装目录的lib目录下。
数据库连接池配置有些繁多但其大大提高了程序访问数据库的效率。所以其比较适合大中型的项目。
3. 基于属性文件的数据库配置
1) .添加配置文件
在项目默认路径(src)下创建文件,命名为db.properties和其他以.properties为后缀的文件。添加配置信息:
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://localhost:1433; DatabaseName=Myschool
user=sa
pass=123
2) .创建Env类读取属性文件
import java.io.*;
import java.util.*;
public class Env extends Properties{
private static Env instance;
public static Env getInstance() {
if (instance != null) {
return instance;
} else {
makeInstance();
return instance;
}
}
private static synchronized void makeInstance() {
if (instance == null) {
instance = new Env();
}
}
private Env() {
InputStream is = getClass().getResourceAsStream("/db.properties");
try {
load(is);
} catch (Exception e) {
e.printStackTrace();
}
}
}
类中的相关方法都为私有,用于将配置信息加载到内存。
3).读出配置信息
//属性文件配置数据库
String driver = Env.getInstance().getProperty("driver");
String url = Env.getInstance().getProperty("url");
String user = Env.getInstance().getProperty("user");
String pass = Env.getInstance().getProperty("pass");
Class.forName(driver);
conn = DriverManager.getConnection(url, user, pass);
在读取配置信息时,使用的是单例模式创建,获取对象实例,并调用properties类提供的方法getProperty(“Key”)方法获得HashTable的value值,进行创建数据可连接类的操作。
数据库操作在应用程序中占有绝对重要的位置,为自己开发的项目选择最优的数据库连接方式可以大大提高项目的运行效率。
由于水平有限只能写到这里,如有不妥的地方请多多指教。