JSP連接數據庫的兩種方式:Jdbc-Odbc橋和Jdbc直連(轉)


學JSP的同學都要知道怎么連數據庫,網上的示例各有各的做法,弄得都不知道用誰的好。其實方法千變萬化,本質上就兩種:Jdbc-Odbc橋和Jdbc直連。

下面先以MySQL為例說說這兩種方式各是怎么連的?

 

方式一:Jdbc-Odbc橋

它所要用到的有JSP自帶的驅動 sun.jdbc.odbc.JdbcOdbcDriver 和 Windows系統中的 ODBC數據源。這兩種好在都不用下載,可以直接使用。原理是網頁向Jdbc驅動請求數據,Jdbc再向Odbc請求,最后Odbc向數據庫請求。Odbc我這里就不多說了,先用它建立一個MySQl的數據源,最好是系統數據源,過程中可能需要到 MySQL for ODBC 的驅動,如果沒有則先安裝,測試成功后留下待用。

接下來就編寫一個JSP網頁測試一下,代碼如下:

 

復制代碼
 1 <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 3 <html xmlns="http://www.w3.org/1999/xhtml">
 4 <head>
 5 <title>連接MySQL</title>
 6 </head>
 7 <body>
 8 <%
 9    //以下是關鍵部分
10    Connection con=null;
11    String DriverName="sun.jdbc.odbc.JdbcOdbcDriver";
12    String DBname="jdbc:odbc:你的數據源名";
13    String DBuser="root";
14    String DBcode="123";
15    //以上是關鍵部分
16    try
17    {
18        Class.forName(DriverName);
19     }
20    catch(Exception e)
21    {
22        out.print(e.toString());
23     }
24    try
25    {
26        con=DriverManager.getConnection(DBname,DBuser,DBcode);
27     }
28    catch(SQLException e)
29    {
30        out.print(e.toString());
31     }
32 %>
33 <p><b>JDBC連接ODBC數據庫測試結果</b></p>
34 <%
35    if(con!=null)
36    {
37        DatabaseMetaData dbmeta=con.getMetaData() ;
38        out.print("<br><b>數據庫產品:</b>"+dbmeta.getDatabaseProductName());
39        out.print("<br><b>數據庫版本:</b>"+dbmeta.getDatabaseProductVersion());
40        out.print("<br><b>用戶名:</b>"+dbmeta.getUserName());
41        out.print("<br><b>測試連接成功 ! </b>"); 
42        try{con.close();}
43        catch(Exception e){}
44    }
45    else
46        out.print("<br><b>連接失敗</b>");
47 %>
48 </body>
49 </html>
復制代碼

 

其中我注釋為關鍵代碼的部分是待會兒要替換的。MySQL的用戶名和密碼要根據你自己的實際情況加以更改。

如果測試成功,則會顯示數據庫的名稱 版本 登錄用戶 等信息。

把關鍵部分換成一下代碼,就是Oracle的了:

 

   Connection con=null;
String DriverName="sun.jdbc.odbc.JdbcOdbcDriver";
String DBname="jdbc:odbc:你的數據源名";
String DBuser="scott";
String DBcode="tiger";

 

SQL Server也是一樣:

 

   Connection con=null;
String DriverName="sun.jdbc.odbc.JdbcOdbcDriver";
String DBname="jdbc:odbc:你的數據源名";
String DBuser="sa";
String DBcode="123";

 

方式二:JDBC直連

這種方式需要用到數據庫公司為Java專門開發的 jar包,系統里是沒有的,得自己下,在文章的最后我會給出下載地址。

MySQL需要用的是 mysql-connector-java-5.1.18-bin.jar 把它拷貝到Tomcat根目錄下的 lib文件夾里就好了。

這也就意味着可以使用上述包里的 com.mysql.jdbc.Driver驅動了。以下是測試網頁代碼:

 

復制代碼
 1 <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*"%>
 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 3 <html xmlns="http://www.w3.org/1999/xhtml">
 4 <head>
 5 <title>連接MySQL</title>
 6 </head>
 7 <body>
 8 <%
 9    //以下是關鍵部分
10    Connection con=null;
11    String DriverName="com.mysql.jdbc.Driver";
12    String DBname="jdbc:mysql://localhost:3306/要連接的數據庫名";
13    String DBuser="root";
14    String DBcode="123";
15    ////以上是關鍵部分
16    try
17    {
18        con=DriverManager.getConnection(DBname,DBuser,DBcode);
19     }
20    catch(SQLException e)
21    {
22        out.print(e.toString());
23     }
24 %>
25 <p><b>JDBC連接數據庫測試結果</b></p>
26 <%
27    if(con!=null)
28    {
29        DatabaseMetaData dbmeta=con.getMetaData() ;
30        out.print("<br><b>數據庫產品:</b>"+dbmeta.getDatabaseProductName());
31        out.print("<br><b>數據庫版本:</b>"+dbmeta.getDatabaseProductVersion());
32        out.print("<br><b>用戶名:</b>"+dbmeta.getUserName());
33        out.print("<br><b>測試連接成功 ! </b>"); 
34        try{con.close();}
35        catch(Exception e){}
36    }
37    else
38        out.print("<br><b>連接失敗</b>");
39 %>
40 </body>
41 </html>
復制代碼

 

測試的結果和方式一類似。

以下是Oracle的關鍵部分代碼:

 

   Connection con=null;
String DriverName="oracle.jdbc.driver.OracleDriver";
String DBname="jdbc:oracle:thin:@計算機名:1521:數據庫實例名";
String DBuser="scott";
String DBcode="tiger";

 

以下是SQL Server的關鍵部分代碼:

 

   Connection con=null;
String DriverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String DBname="jdbc:sqlserver://localhost;DatabaseName=要連接的數據庫名";
String DBuser="sa";
String DBcode="123";


總結:

方式二的優點是整個過程中不需要用到ODBC,更加直接;缺點是需要為不同數據庫下載不同的JAR包。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM