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值,進行創建數據可連接類的操作。
數據庫操作在應用程序中佔有絕對重要的位置,爲自己開發的項目選擇最優的數據庫連接方式可以大大提高項目的運行效率。
由於水平有限只能寫到這裏,如有不妥的地方請多多指教。