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包。
JSP连接数据库的两种方式:Jdbc-Odbc桥和Jdbc直连(转)的更多相关文章
- php连接数据库的两种方式- 面向过程 面向对象
php连接数据库的两种方式- 面向过程 面向对象 一.面向对象1. 链接数据库$conn = @new mysqli("127.0.0.1","root", ...
- <%@ include file=""%>与<jsp:include page=""/>两种方式的作用
一.前言 身为一名coder有太多太多的知识点要去学,太多太多的东西要去记.往往一些小细节也就难免疏忽,但悲催的是多数困恼你的bug就是因为这些微不足道的知识点.我们又不是机器人,怎么可能什么都记得了 ...
- 2019/7/18 --1.<%@ include file=""%>与<jsp:include page=""/>两种方式的作用
一.前言 身为一名coder有太多太多的知识点要去学,太多太多的东西要去记.往往一些小细节也就难免疏忽,但悲催的是多数困恼你的bug就是因为这些微不足道的知识点.我们又不是机器人,怎么可能什么都记得了 ...
- ADO.NET连接数据库的两种方式
//实现了IDisposable接口的类,用using括起来 //插入数据 string connString = "Data Source=(local);Initial Catalog= ...
- php连接数据库的两种方式
一.mysqli方式连接数据库 $mysql_conf = array( 'host' => 'localhost:3306', 'db' => 'ssql', 'db_user' =&g ...
- <%@ include file=""%>与<jsp:include page=""/>两种方式的作用以及传值
一:使用 1.include指令: 1 <%@include file="文件的绝对路径或者相对路径"%> file属性是必填的(绝对或相对路径),但它不支持 ...
- 将html页改成jsp的两种方式
将html页改成jsp的两种方式 作者: 字体:[增加 减小] 类型:转载 时间:2013-08-13 将html页改成jsp有两种方法,第一种是直接修改html文件,另一种是新建jsp文件.下面为大 ...
- jsp中的两种跳转方式分别是?有什么区别?
在JSP中跳转有两种方式 forward跳转:<jsp:forward page ="跳转页面地址"> response跳转:response.sendRedirect ...
- 网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别
1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2 ...
随机推荐
- 用C#.NET编写软件注册机
验证注册码是保护软件产品产权的常用手段.一般过程如下, 1. 软件发行者收集用户特有的信息: 2. 根据用户特有的信息,使用注册机生成注册码并把注册码发给客户: 3. 向软件导入注册码,由软件自 ...
- MySQL连接字符串总结
一.MySQL Connector/ODBC 2.50 (MyODBC 2.50)连接方式 1.本地数据库连接 Driver={MySQL};Server=localhost;Option=16834 ...
- 一个很不错的bash脚本编写教程
转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Lin ...
- java 模拟消息的发送功能
import java.util.HashMap; import java.util.Iterator; import java.util.Map; /* * 完成消息的发送功能 * 在发送消息之前, ...
- n条直线最多能将一个平面分成多少部分?
f(n)=n(n+1)/2+1 原理:第N条直线可以被前N-1条直线分为N段,对于 每1段则将平面分为两份,所以对于前 f(n)=f(n-1)+n. f(n-1)=f(n-2)+n-1 ...... ...
- JAVA中线程池启动定时任务
/** * 用线程池启动定时器 * @param args */ public static void main(String[] args) { //10秒启动 Executors.newSched ...
- fildder学习
http://www.cnblogs.com/strick/p/4570006.html#first
- 【Javascript】列表查询页面,简单地保存上一次查询的查询参数
开发中经常做一些查询参数 + 列表参数的功能,这些功能有时候需提供导出Excel,或带超链接到其他明细页面的功能点. 在一些交互性要求严格的系统,需求方会要求: 用户第一个输入某些查询条件进行列表查询 ...
- mysq 安装时候进行生成数据库系统时候执行语句 ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql 时候报错
我在安装数据库时候在系统进行生成数据库时候出现下面问题,就是在 scripts里面mysql_install_db没有执行权限, 进入到scripts目录下,执行chmod 777 mysql_ins ...
- mysqldump命令
mysqldump命令 mysqldump命令是mysql数据库中备份工具,用于将MySQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中. 语法 mysqldump(选项) 选项 -- ...