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

  • 相关阅读:
    css中的选择器
    HTML5总结
    table中的一些另类标签
    form表单
    Laravel常用命令行中文版
    浅谈Session与Cookie的区别与联系
    Wechat微信公众平台开发
    js中的正则表达式入门
    畅谈Redis和Memcached的区别
    php的ob缓存详解
  • 原文地址:https://www.cnblogs.com/hoobey/p/6052341.html
Copyright © 2011-2022 走看看