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包。

posted @ 2012-03-10 19:31  羽痕爱编程  阅读(9404)  评论(2编辑  收藏  举报