1、JDBC-ODBC橋接器
機制:應用程序只需建立JDBC和ODBC之間的連接,即JDBC-ODBC橋接器,而與數據庫的連接由ODBC去完成
優點:由于ODBC驅動程序廣泛使用,建立這種橋接后,使得JDBC有能力訪問幾乎所有類型的數據庫
缺點:依賴ODBC,移植性差,即應用程序所駐留的計算機必須提供ODBC
步驟:
(1)建立JDBC-ODBC橋接器 java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
(2)創建ODBC數據源 ODBC數據庫管理器
(3)和ODBC數據源建立連接 DriverManager.getConnection("jdbc:odbc:數據源名字","login name","password");
例一
------------------------------
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.sql.*" %>
<html><body>
<%
Connection con =null;
Statement sql=null;
ResultSet rs=null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
try{
con=DriverManager.getConnection("jdbc:odbc:wz","liuyz","liuyz1");
}
catch(SQLException e)
{ e.printStackTrace();}
}
catch(ClassNotFoundException e)
{ e.printStackTrace();}
try{
sql=con.createStatement();
rs=sql.executeQuery("select * from work_log");
out.print("<table boder>");
out.print("<tr>");
out.print("<th width=100>"+"proc_name");
out.print("<th width=50>"+"sql_desc");
out.print("</tr>");
while(rs.next())
{
out.print("<tr>");
String s1=rs.getString(1);
String s2=rs.getString(2);
out.print("<td>"+s1+"</td>"+"<td>"+s2+"</td>");
out.print("</tr>");
}
out.print("</table>");
con.close();
}
catch (SQLException e)
{
out.print(e);
}
%>
</body>
</html>
2、使用純Java數據庫驅動程序
注意把ojdbc14.jar
copy ORACLE_HOME/jdbc/lib/ojdbc14.jar TOMCAT_HOME/webapps/ROOT/WEB_INF/lib
或者
copy ORACLE_HOME/jdbc/lib/ojdbc14.jar TOMCAT_HOME/common/lib
任一都可以
機制:JDBC調用本地純Java驅動程序和相應的數據庫建立連接
優點:不依賴ODBC,移植性好
步驟:
(1)加載純Java數據庫驅動程序 Class.forName("oracle.jdbc.driver.OracleDriver")
(2)和指定的數據庫建立連接 DriverManager.getConnection("jdbc:oracle:thin:@10.77.xx.xx:1521:wzdata","liuyz","liuyz1")
例二
----------
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.sql.*" %>
<html><body>
<%
Connection con =null;
Statement sql=null;
ResultSet rs=null;
try{ Class.forName("oracle.jdbc.driver.OracleDriver");}
catch(ClassNotFoundException e)
{ e.printStackTrace();}
try {con=DriverManager.getConnection("jdbc:oracle:thin:@10.77.xx.xx:1521:wzdata","liuyz","liuyz1");}
catch(SQLException e)
{ e.printStackTrace();}
try{
sql=con.createStatement();
rs=sql.executeQuery("select * from work_log");
out.print("<table boder>");
out.print("<tr>");
out.print("<th width=100>"+"proc_name");
out.print("<th width=50>"+"sql_desc");
out.print("</tr>");
while(rs.next())
{
out.print("<tr>");
String s1=rs.getString(1);
String s2=rs.getString(2);
out.print("<td>"+s1+"</td>"+"<td>"+s2+"</td>");
out.print("</tr>");
}
out.print("</table>");
con.close();
}
catch (SQLException e)
{
out.print(e);
}
%>
</body>
</html>
-------------------網絡文摘-----------
oracle9i
copy $ORACLE_HOME/jdbc/lib/classes12.jar to $TOMCAT_HOME/webapps/ROOT/WEB_INF/lib
copy $ORACLE_HOME/jdbc/lib/ojdbc14.jar to $TOMCAT_HOME/common/lib
restart tomcat
connect.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<body>
<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@ora_server:1521:orcl";
//orcl為你的數據庫的SID
String user="usr";
String password="pwd";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from table";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>