zoukankan      html  css  js  c++  java
  • 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包。

  • 相关阅读:
    Leetcode Substring with Concatenation of All Words
    Leetcode Divide Two Integers
    Leetcode Edit Distance
    Leetcode Longest Palindromic Substring
    Leetcode Longest Substring Without Repeating Characters
    Leetcode 4Sum
    Leetcode 3Sum Closest
    Leetcode 3Sum
    Leetcode Candy
    Leetcode jump Game II
  • 原文地址:https://www.cnblogs.com/hoobey/p/6052341.html
Copyright © 2011-2022 走看看