您的位置:首页 > 数据库

jsp中,如何用JDBC连数据库

2007-03-23 14:16 204 查看
JAVA语言的跨平台的工作能力(Write Once ,Run Anywhere)、优秀的图像处理能力(我相信现在没有那种语言可以超过JAVA在网络上的图形处理能力)、网络通信功能、通过JDBC数据库访问技术等等,让我们谁都不可否认JAVA语言是SUN公司对于计算机界的一个巨大的贡献。笔者可以描述这样一个场景:有一天你上网完全可以不用IE 或者NETSCAPE,上网就像是玩游戏,你可以获得游戏那么精美的图像和互动的感觉,如果你玩过UO,也许你就知道那种感觉了,但是JAVA做成的东西一定会超过UO的,因为不单单是游戏,也不是单单是浏览器,如果你愿意(要你有钱,有时间,有优秀的JAVA人才)你可以把所有的这一切用Java完全集成出来!!!我不是夸大JAVA的功能,大家可以访问一下http://www.simchina.net的那个社区程序,你就能找到一种感觉了:相信我没有说什么假话 。好了,不说废话了,现在我向你介绍JAVA的数据库访问技术----JDBC数据库访问技术(你可千万不要搞成ODBC了哟!)。

JDBC技术事实上是一种能通过JAVA语言访问任何结构化数据库的应用程序接口(API)(Sun这样说的,我也不知道是不是真的),而且现在的JDBC 3.0据Sun说也能访问Execel等电子表格程序!

JDBC对于数据库的访问有四种方式,我们这里只是介绍两种:

第一种是通过ODBC做为“桥”(Bridge)对数据库访问,第二种是直接对数据库访问。

我们先来看看第一种JDBC<-->ODBC访问的流程:

JDBC Driver Mannager->JDBC<->ODBC桥->ODBC->数据库客户机驱动库->数据库服务器->返回查询结果,在这种访问中值的我们注意的是虽然JAVA是"Write Once ,Run Anywhere",但是如果通过这种访问的话,需要客户端必须设置ODBC和有相应的数据库客户机的驱动,当你看了下面的另外一个流程的时候或许你会想:明明下一种更方面,为什么还要有这个东西的产生!呵呵,因为,未必所有的数据库服务器提供商都提供下面的JDBC驱动程序(给JDBC访问提供相应的接口),所以就有了JDBC<->ODBC Bridge。

接着再让我们来看看第二种访问流程:

JDBC Driver Mannager->局部JDBC驱动->客户端数据库->数据库服务器->返回查询结果,这种访问事实上是转换JDBC调用为相应的数据库(Oracle, Sybase, Informix, DB2, 和其他的数据库数据库管理系统)的客户端API调用(这么说,不知道大家能不能懂,说简单点就好像ASP不是通过DSN对数据库访问而是通过OLEDB访问,说道这里我还是不知道大家能不能明白我的意思。哎呀,不要扔鸡蛋嘛!),这种方式的访问需要相应的数据库提供商提供相应的JDBC驱动程序,但是有一种好处,可以独立于odbc用于可以随处可Run的客户端的浏览器中的Applet程序。
我们下面将给大家一个通过JDBC-ODBC桥数据库访问的实例,但是在看下面的事例前我想问大家一次:JDK1.3装了吗?数据库驱动装了吗(我使用的是SQLserver)?你该没有使用Linux吧?虽然java支持Linux,但是老兄我可没有使用Linux哟(这同JAVA的Write Once ,Run Anywhere没有关系),由于使用了运行于Win下面的ODBC,我建议你看看这篇东西http://www.aspcn.com/showarticle.asp?id=112,否则你要是有了问题,出不了结果那岂不是要怪我(不过欲加之罪,何患无吃... ...),冤枉呀!哎呀,说了这么多的废话,还是让我们来看看到底JDBC的调用吧!既然我们是通过odbc访问数据库,所以这个odbc是跑不了的,我们先来设置你的odbc:打开你的odbc数据源->选择系统dsn(Click加新的dsn-)->接下来输入选择数据库类型、输入dsn名:、选择服务器、连接数据库的方式、输入数据库的登陆用户和密码->测试连接,如果测试成功的话,那么你的dsn就建立好了,我的dsn名为Sqlserver.使用的是sqlserver7.0,以 “sa”登陆,密码为空。这些东西都是后面要用道的!

好了下面让我们来看程序代码:
//###########################################################
//代码开始
//###########################################################

import java.sql.*;
//加载java数据连接包,java基本所有的数据库的调用的都在这个东西里面

public class InsertCoffees {

public static void main(String args[]) {

String url = "jdbc:odbc:sqlserver";
//取得连接的url名,注意sqlserver是dsn名
Connection con;
//实例化一个Connection对象
Statement stmt;
String query = "select * from col_link";
//选择所有的Col_link表中的数据输出

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//加载jdbc-odbc桥驱动

} catch(java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
//加载jdbc-odbc桥错误
System.err.println(e.getMessage());
//其他错误
}

try {

con = DriverManager.getConnection(url, "sa", "");
//数据库连接

stmt = con.createStatement();
//Create 一个声明
stmt.executeUpdate("CREATE TABLE col_link (sitename varchar (20) NULL ,siteurl varchar (50) NULL) ");
//执行了一个sql语句生成了一个表col_link的表
stmt.executeUpdate("insert into col_link values('ASP中华网','http://www.aspcn.com')");
stmt.executeUpdate("insert into col_link values('永远到底有多远','http://xuankong.com')");
//执行一个insert into语句
stmt.executeUpdate("update col_link set siteurl='http://www.aspcn.com/xuankong/xuankongt.jpg' where siteurl='http://xuankong.com'");
//执行一个update语句,更新数据库
ResultSet rs = stmt.executeQuery(query);
//返回一个结果集
System.out.println("Col_link表中的数据如下(原始数据)");
//下面的语句使用了一个while循环打印出了col_link表中的所有的数据
System.out.println("站点名 "+" "+"站点地址");
System.out.println("---------------"+" "+"----------------");
while (rs.next()) {
String s = rs.getString("sitename");
String f = rs.getString("siteurl");
//取得数据库中的数据
System.out.println(s + " " + f);
/*String t = rs.getString(1);
String l = rs.getString(2);
System.out.println(t + " " + l);*/
/*jdbc提供了两种方法识别字段,一种是使用getXXX(注意这里的getXXX表示取不同类型字段的不同的方法)获得字段名,
第二种*是通过字段索引,在这里我把第二种方法注释了*/
/*你可以访问这个连接获得getxxx的用法:http://java.sun.com/docs/books/tutorial/jdbc/basics/_retrievingTable.html*/
}
stmt.close();
con.close();
//上面的语句关闭声明和连接
} catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
//显示数据库连接错误或者查询错误
}
}
}
//###########################################################
//代码结束
//###########################################################

在上面这个程序中我想你展示了如何使用JDBC-ODBC连接数据库,使用SQL语句生成一个表,使用SELECT、INSERT 、UPDATE语句取的、插入和更新一个表中的数据,如何通过字段名和字段索引访问数据库中的东东!我希望你能从上面的代码真正的学习到一些东西!

发挥你的想象力,设想一下JAVA到底,比如说可以通过数据库做一个不需要GUI(图形用户界面)的聊天室,呵呵,感觉起来就像在DOS环境下打字的聊天室!哈哈!

最后需要说的是笔者的调试上面程序的环境:WIN2000 , JDK1.3,MS SQLSERVER编辑软件:EDITPLUS 2.01a(这最后的东西可不是废话,虽然早就了一些专业的JAVA开发工具,但是笔者建议JAVA初学者使用文本软件开发JAVA程序)
参考资料:http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=123&threadID=12195&tstart=1200

//###########################################################
转过来的,其实你只要查询一下有很多。若有志要做jsp程序员,至少买些书看看吧。推荐一本《jsp web 编程指南》挺不错的。不过现在用纯jsp效率不高,试试了解了jsp之后,学学struts架构的jsp

本文章的测试是在windows 2000下的jsp的运行环境中进行的。关于在windows 2000下搭建Jsp的运行环境不在此讨论,如有兴趣,可参见本网站的http://www.code-labs.com/article/articleinfo.php?id=3进行安装。

下面就把我在Jsp中使用JDBC来连接MySql的测试过程和大家一同分享,希望能给Jsp的初学者提供一些帮助。如有不正确之处请指正!

一、安装及设置

1、下载 JDBC for MySQL驱动程序:mm.mysql.jdbc-1.2c.tar.gz

下载地址:http://www.mysql.com/downloads/api-jdbc.html.

2、下载结束后,可把这个zip文件随意解压到任意的目录,我们假设目录是:c:/jdbc

然后我们来设置ClassPAth 以保证我们的WebServer能够访问到这个驱动程序

设置方法如下:

1.我的电脑->属性->高级->环境变量, 如果已经有ClassPAth 就编辑,否则增加一个ClassPAth

2.因为我的机器已经有ClassPAth的值,所以我编辑ClassPAth,加上C:/jdbc/mm.mysql.jdbc-1.2c/mysql_comp.jar

3.重新启动服务器即可

二、与数据库连接

JSP连接数据可以通过两种方法,一种是通过JDBC DRIVER;另一种是通过JDBC-ODBC桥;JSP连接MYSQL,是通过MYSQL专用的JDBC DRIVER来完成的。

1、加载mm.mysql驱动程序

加载mm.mysql驱动程序非常的简单,只需要一句代码。

Class.forName("org.gjt.mm.mysql.Driver");

2、建立连接
Connection con=DriverManager.getConection(Url, "user","Password");
user是数据库用户名; password是数据库用户的口令;
Url有些复杂,不在此讨论,我连接MYSQL的Url为连接本地的数据库:
jdbc:mysql://localhost/test,你可以根据自己的情况修改!:)
可以通过下面代码,测试一下:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.sql.*" %>
<%
String sDBDriver = "org.gjt.mm.mysql.Driver";
String sConnStr = "jdbc:mysql://localhost/test";
Connection Con = null;
Statement Stmt = null;
ResultSet RS=null;
try
{
Class.forName(sDBDriver).newInstance();
}
catch(java.lang.ClassNotFoundException e)
{
out.print("Connect to Database error: " + e.getMessage());
}
try
{
Con = DriverManager.getConnection(sConnStr," root","");
}
catch(SQLException e)
{
out.print(e.toString());
}
%>
3、查询

与数据库连接成功之后,下面我们就来实际的应用对数据库的查询。
生成数据库对象:
Stmt = Con.createStatement();
执行SQL语句并返回结果集
RS= Stmt.executeQuery("SELECT * FROM clert");
当然SQL语句你可以自己写的!^_^
下面是对数据库查询的jsp代码
<%
Stmt = Con.createStatement();
RS= Stmt.executeQuery("SELECT * FROM clert");
String tt;
String link;
String makeStr;
out.print("<table border='2'>");
while (RS.next()) {
out.print("<tr><td>");
tt = RS.getString("nickname");
out.print(tt);
out.print("</td><td>");
tt = RS.getString("email");
out.print(tt);
out.print("</td></tr>");
}
out.print("</table>");
RS.close()
%>
好了,把上面两段代码结合起来,运行一下!将看到结果!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: