用JDBC連接Oracle數(shù)據(jù)庫(問題得以處理,特此總結(jié)一下,歡迎兄弟們指出不足)
發(fā)表時間:2024-06-18 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]通常有四種連接方式可供選擇,這里我只采用了其中兩種我采用win98下的tomcat服務器是winnt的,安裝的Oracle我的類路徑是:D:\tomcat\webapps\ROOT\WEB-INF\classes\yourpackagejsp路徑:D:\tomcat\webapps\ROOT\調(diào)用...
通常有四種連接方式可供選擇,這里我只采用了其中兩種
我采用win98下的tomcat
服務器是winnt的,安裝的Oracle
我的類路徑是:D:\tomcat\webapps\ROOT\WEB-INF\classes\yourpackage
jsp路徑:D:\tomcat\webapps\ROOT\
調(diào)用路徑:http://127.0.0.1:8080/connOracle.jsp
(你的實在不行,可以試試我的路徑^_^)
1,使用JDBC_ODBC橋連接
首先記得在系統(tǒng)數(shù)據(jù)源里建立一個ODBC連接哦^_^,(可以采用PB或其他程序連接數(shù)據(jù)庫,測試一下這個ODBC建立成功沒有)
接下來寫類文件,可以采用以下類文件:
package yourpackage; //注意,java的類存儲系統(tǒng)和文件系統(tǒng)有關(guān)哦:)
import java.sql.*;
public class opendb
{
String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr="jdbc:odbc:yourdb"; //這里的yourdb是你建的ODBC數(shù)據(jù)原的DNS
Connection conn=null;
ResultSet rs=null;
public opendb()
{
try{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e)
{
System.err.println("opendb();"+e.getMessage());
}
}
public ResultSet executeQuery(String sql)
{
rs=null;
try{
conn=DriverManager.getConnection(sConnStr,"username","password"); //注意這里的數(shù)據(jù)庫用戶名和密碼一定要根據(jù)實際情況設(shè)置
Statement stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLException ex){
System.err.println("aq.executeQuery:"+ex.getMessage());
}
return rs;
}
}
這種方法比較簡單,通常較容易實現(xiàn),但據(jù)說存在漏洞(本人沒有做深層次研究),且不適于大型數(shù)據(jù)庫的大規(guī)模的數(shù)據(jù)流量,故嘗試直接采用JDBC連接^_^
2,直接使用JDBC連接數(shù)據(jù)庫
首先把類文件給你,看看吧,基本上差不多,就是連接參數(shù)的設(shè)置問題:
package yourpackage;
import java.sql.*;
public class openOracle
{
String sDBDriver="oracle.jdbc.driver.OracleDriver"; //不要以為這個驅(qū)動器是系統(tǒng)已有的,我也是后來才把它加進去的,關(guān)鍵哦
String sConnStr="jdbc:oracle:thin:@server:1521:yourservername"; //要注意啦,server為你用的數(shù)據(jù)庫所在的服務器的名稱,一般Oracle的端口都采用1521,當然,你也可以咨詢一下你們的系統(tǒng)管理員^_^,yourservername是你用的數(shù)據(jù)庫的服務名
Connection conn=null;
ResultSet rs=null;
public openOracle()
{
try{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e)
{
System.err.println("openOracle();"+e.getMessage());
}
}
public ResultSet executeQuery(String sql)
{
rs=null;
try{
conn=DriverManager.getConnection(sConnStr,"username","password");
Statement stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLException ex){
System.err.println("aq.executeQuery:"+ex.getMessage());
}
return rs;
}
}
編譯成功,但用瀏覽器執(zhí)行,出錯 :(,總是一大堆不認識的系統(tǒng)的類列了一片,這時我發(fā)現(xiàn)啟動tomcat時彈出的DOS窗口拋出這樣兩個錯誤(是我的catch捕獲的)
openOracle():oracle.jdbc.odbc.OracleDriver
aq.executeQuery: No suitable driver
由此可以推測是驅(qū)動程序找不到,通過請教網(wǎng)友,發(fā)現(xiàn)缺少的從classes12.zip文件里可以找到。通過搜索我在我的D:\Oracle\jdbc\lib里找到這個文件。解壓,通過各種嘗試,以及相關(guān)推理分析,我把解壓后的其中的Oracle文件夾放到D:\tomcat\lib下,運行程序,成功了,可以看到令人興奮的“連接成功”的結(jié)果了^_^
以上這兩種方法,你都可以采用下面這個文件進行測試,只需修改相應調(diào)用的類文件就可以了。^_^
<%@ page contentType="text/html;charset=GBK"%>
<%@ page language="java" import="java.sql.*"%>
<jsp:useBean id="db" scope="page" class="yourpackage.openOracle"/>
<%
String sql="select * from user ";//這里,你可以隨便找你的一個表進行簡單查詢,只要能產(chǎn)生結(jié)果就可以(記得要找個有數(shù)據(jù)的表哦:P)
ResultSet rs=db.executeQuery(sql);
String mess="";
if(rs.next())
{
mess="連接成功!";
}
else
{
mess="連接失!";
}
rs.close();
%>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<TITLE>數(shù)據(jù)庫連接測試</TITLE>
</HEAD>
<BODY>
<H2>
數(shù)據(jù)庫連接測試結(jié)果:
<%=mess %>
</H2>
<P></P>
</BODY>
</HTML>
試試看吧!程序基本沒問題,如果不能實現(xiàn),多方面找找原因,放的目錄對不對,需要的類文件有沒有放進去?注意別犯低級錯誤哦^_^
祝你好運!^_^