在JSP中獲取數據庫連接
1.在Oracle的SQL Plus工具中,以具有DBA權限的用戶登錄數據庫。
system/manger@to_128
@后的to_128為數據庫的連接串名,需要根據具體情況更改,如果數據庫是在本地,則可以省略@和連接串。
2.創建Jbuser用戶,指定密碼為abc。
SQL> create user Jbuser identified by abc;
3.JSP為Jbuser用戶分配connect和resource角色權限。
SQL> grant connect ,resource to Jbuser;
4.用Jbuser登錄數據庫
SQL> connect Jbuser/abc@to_128;
5.創建用戶表和序列,在SQL> 命令中運行下面的sql代碼。
創建表和序列的代碼:
- --創建用戶表
- create table T_USER (
- USER_ID CHAR(6) not null,
- USER_NAME VARCHAR2(60),
- PASSWORD VARCHAR2(20),
- constraint PK_T_USER primary key (USER_ID)
- );
- --創建登錄日志表
- create table T_LOGIN_LOG (
- ID CHAR(12) not null,
- USER_ID CHAR(6) not null,
- DT_LOGIN CHAR(14) not null,
- DT_LONOUT CHAR(14),
- constraint PK_T_LOGIN_LOG primary key (ID)
- );
- --創建索引,用于生成T_LOGIN_LOG表的主鍵
- create sequence SEQ_LOGIN_LOG_ID
- increment by 1
- maxvalue 999999999999
- minvalue 100000000000;
6.在T_USER用戶表中插入3歷史人物作為初始用戶,在SQL>命令中運行下面的sql代碼。
往T_USER表中插入3條記錄,創建工程及Web模塊,在創建數據庫后,打開JBuilder.
- insert into T_USER(USER_ID,USER_NAME,PASSWORD) values('100000','姜子牙','123456');
- insert into T_USER(USER_ID,USER_NAME,PASSWORD) values('100001','鮑叔牙','123456');
- insert into T_USER(USER_ID,USER_NAME,PASSWORD) values('100002','豎牙','123456');
- commit;
創建工程和Web模塊。
1).File->New ProJect...創建一個名為bookstore的工程。
2).File->New...->Web->雙擊Web Module(WAR)圖標創建一個Web模塊,名稱取為webModule。選用Tomcat 5.0作為Web應用服務器。
編寫獲取數據庫連接類
必須通過數據連接才可以訪問數據庫,在模塊的多個地方都需要獲取數據庫連接,所以我們編寫一個獲取數據連接的類,以增強代碼的復用率。
在編寫獲取數據庫連接的類時,必須先將Oracle的JDBC驅動器類包classes12.Jar加入工程擴展類庫中(classes12.Jar位于/ Jdbc/lib的目錄下),我們將classes12.Jar放在<工程目錄>/oraJdbcLib下。通過以下的步驟在工程擴展類庫中引入classes12.Jar:
ProJect->Properties...->Paths設置頁->切換到Required Libraries->點擊Add...->在彈出的Add to ProJect Classpath對話框中切換到Archives標簽頁,選擇工程目錄下的<工程目錄>/oraJdbcLib /classes12.Jar。
將Oracle的JDBC驅動器類包classes12.Jar引入工程擴展類庫后,JSP在工程中創建DBConnection類,其代碼如下所示:
代碼DBConnection.Java
- package bookstore;
- import java.sql.*;
- import java.util.Properties;
- public class DBConnection {
- //獲取數據庫連接類
- public static Connection getConnection() throws SQLException {
- try {
- Class.forName("oracle.jdbc.driver.OracleDriver");
- } catch (ClassNotFoundException ex) {
- ex.printStackTrace();
- return null;
- }
- Properties sysProps = new Properties();
- sysProps.put("user", "jbuser");
- sysProps.put("password", "abc");
- return DriverManager.getConnection(
- "jdbc:oracle:thin:@192.168.0.128:1521:ora9i", sysProps);
- }
- }
該類僅提供了一個靜態方法getConnection(),用Jbuser/abc獲取位于192.168.0.128,SID為ora9i的數據連接。
獲取數據庫連接有兩個關鍵點:
1、指定數據庫驅動器類
如第10行代碼所示,Oracle的JDBC驅動器類名是:oracle.Jdbc.driver.OracleDriver,不同數據庫有自己的JDBC數據庫驅動器,如果你使用其它數據庫,請自行查閱相關的資料。
2、指定數據庫的URL連接串
在第19行中,我們指定了一個數據庫URL連接串,不同數據庫的URL連接串格式也不一樣,JSP對于Oracle數據庫來說,數據庫URL連接串包含4個部分:
◆Jdbc:oracle:thin :指定JDBC驅動器的類型,這里指定用瘦客戶端驅動器,無需在連接客戶端安裝其他的組件,最為常用。
◆192.168.0.128 :數據庫所在機器的IP,也可以用機器名。
◆1521 :數據庫監聽器所在的端口,一般情況下Oracle默認在1521端口。
◆ora9i :數據庫SID名稱。
【編輯推薦】