Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5542997
  • 博文数量: 763
  • 博客积分: 12108
  • 博客等级: 上将
  • 技术积分: 15717
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-28 21:21
个人简介

业精于勤,荒于嬉

文章分类

全部博文(763)

文章存档

2018年(6)

2017年(15)

2016年(2)

2015年(31)

2014年(14)

2013年(87)

2012年(75)

2011年(94)

2010年(190)

2009年(38)

2008年(183)

2007年(28)

分类: Java

2008-05-12 22:59:03


    下来我说一下 Jsp 连接 mySQL 的问题。如果用 Jsp 去连接 Access,我感觉就是把裙子穿在男人身上。Access 和 ASP 才是天造地设的一对。Jsp 连接 mySQL 或者 Oracle 才算合情合理。原因我认为是:用 Jsp 做开发,其优势就是跨 OS 平台,如果用 Jsp + Access 组合,跨平台的优势就没有了。ASP 和 Access 已经工作的很好了,也简单,你何必要别扭的去用 Jsp 开发?当然,如果您对 Jsp 非常熟悉(或者对 Asp 非常不熟悉),或者非常喜欢 Jsp(或者非常不喜欢 Asp),或者您有大量的数据积累在 Access 里,您要用 Jsp+Access 在技术上也不是不行的。
    mySQL 的安装非常简单,基本安装完毕都能正常使用,建立数据库,设置用户,都可以在 mySQL 的环境下完成。就是对用惯了 GUI 界面的人,感觉不顺手。网上能下载到一些 mySQL 的图形用户界面的管理工具,但好象不是免费的。

    用 Jsp 连接 mySQL 数据库,从表里取数据,写一段代码测试一下:

程序代码1:

<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>

<%@ page import="java.sql.*"%>

<%@ page contentType="text/html; charset=GB2312" %>



  mySQL test


<%
  Connection con;
  Statement stmt;
  ResultSet rs;

  //加载驱动程序,下面的代码为加载MySQL驱动程序
  Class.forName("com.mysql.jdbc.Driver");

  //注册MySQL驱动程序
  DriverManager.registerDriver(new com.mysql.jdbc.Driver());

  //用适当的驱动程序连接到数据库
  //String dbUrl = "jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=GB2312";
  //String dbUser = "root";  //用户名
  //String dbPwd = "abcd1001";  //密码
  //建立数据库连接
  //con = java.sql.DriverManager.getConnection(dbUrl, dbUser, dbPwd);

  String dbUrl ="jdbc:mysql://localhost:3306/mysql?user=root&password=abcd1001&useUnicode=true&characterEncoding=gb2312";
  con = DriverManager.getConnection(dbUrl);

  //创建一个JDBC声明
  stmt = con.createStatement();

  //增加新记录
  //stmt.executeUpdate("INSERT INTO books (id,name,title,price) VALUES ('999','Tom','Tomcat Bible',44.5)");

  //查询记录
  rs = stmt.executeQuery("select * from user");

  //输出查询结果
  out.println("

");
  while (rs.next())
  {
  String col1 = rs.getString(1);
  String col2 = rs.getString(2);
  String col3 = rs.getString(3);
  String col4 = rs.getString(4);
  //打印所显示的数据
  out.println("
");
  }
  out.println("
"+col1+""+col2+""+col3+""+col4+"
");

  //关闭数据库连结
  rs.close();
  stmt.close();
  con.close();
%>


程序代码2:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>


<%
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/chclyb?user=root&password=abcd1001&useUnicode=true&characterEncoding=8859_1";
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
第一个字段内容为:<%=rs.getString(1)%>
第二个字段内容为:<%=rs.getString(2)%>

<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>

    我的以上 2 段代码都能工作。注意以上2段代码的 Class.forName(…) 部分的不同:

    Class.forName("com.mysql.jdbc.Driver");  //在程序代码1中
    Class.forName("org.gjt.mm.mysql.Driver").newInstance();  //在程序代码2中

    程序代码 2 中的代码是为了兼容 mySQL 的老版本而保留的,现在都用 Class.forName("com.mysql.jdbc.Driver"); 驱动了。
    以上的代码拷贝到 Tomcat 的虚拟路径下能成功执行吗?重要的事情
恐怕不行。因为还有个没有做:需要给 Tomcat5.0 安装 mySQL 的 JDBC 驱动程序!这个问题,网上的大多数文章都没讲,给贴一段连接 mySQL 的代码,就让我们去连接数据库了,连不上的!
    mySQL 的驱动需要从网上下载,下载完毕,拷贝到 E:\Tomcat 5.0\common\lib 路径下(我下载下来文件名是mysql-connector-java-3.2.0-alpha-bin.jar),把 Tomcat 服务来个Stop/start 安装就结束了。文件名可以改的,不影响使用,因为这是个压缩包,Tomcat 能自动认识到包里的内容,并把有关类注册进来。前面说的 Class.forName(…) 部分的不同可以在包里找到答案,因为包里正有 com/mysql/jdbc/Driver 和 org/gjt/mm/mysql/Driver 2 个路径,下面放的类文件是一样的。

    用 Jsp 连接 Oracle 数据库测试,就好说了,但是同样必须在 E:\Tomcat 5.0\common\lib 路径下拷贝和注册 Oracle 的 JDBC 驱动,这个驱动文件没必要在网上四处打听,显得很菜的样子(我当初就是这样!),这个文件在 Oracle 的 E:\oracle\ora90\jdbc\lib 路径下,文件名是 classes12.jar。我的示例代码如下:


程序代码3:

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>


<%
  Class.forName("oracle.jdbc.driver.OracleDriver");   //.newInstance();
  String url="jdbc:oracle:thin:@10.0.1.1:1521:mydb"; //mydb为数据库的SID,10.0.1.1 为 数据库服务器 IP
  String user="system";
  String password="abcd1001";
  Connection conn= DriverManager.getConnection(url, user, password);
  Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  String sql="select * from test";  //test 是表名,要先建立这个表,再送几条记录
  ResultSet rs=stmt.executeQuery(sql);
  while(rs.next())
  {
%>
    第一个字段内容为:<%=rs.getString(1)%>
    第二个字段内容为:<%=rs.getString(2)%>

<%
  }
  out.print("数据库操作成功,恭喜。");

  rs.close();
  stmt.close();
  conn.close();
%>

    关于 Oracle 数据库:我安装的是 Oracle9i 企业版(Windows server 2003 下),安装完毕后,Oracle 将占用 80 端口运行自带的 Apache1.3 Web服务器,还占用 8080 端口运行 TNSLSNR 服务(TNSLSNR.EXE文件在 X:\oracle\ora90\BIN 下),提供一些 log 及文档。所以建议安装 Oracle 的机器就不要安装 IIS 了,如果 IIS 先启动起来,Oracle 的 http 服务就不能启动了。也不能占用 8080 端口。问题是如果还安装 Tomcat,Tomcat 默认正好用的是 8080 端口,所以安装 Tomcat 时最好把端口设成别的值,如 8088。
    Oracle 里建立表,必须先建立表空间,还可以加一个数据文件(也可以不加,因为建立表空间时默认已经建了一个数据文件。以后可以视需要再添加)。再建立一个用户 (以后的“方案”名和用户名一样)。建立表时,要选择表空间和方案名,最好把表建立在对应的方案下,把他们对应起来,以后好管理。如果把表建立在别的“方 案”下,用 SQL*plus 语句访问时要用 [方案].[表名]的格式。

阅读(1561) | 评论(0) | 转发(0) |
0

上一篇:java 面试题

下一篇:地震

给主人留下些什么吧!~~