兜兜转转来到这
作者兜兜转转来到这·2015-10-27 18:33
数据库管理员·没有

Java web开发中连接oracle数据库的过程

字数 3681阅读 1799评论 0赞 0

1.前提条件

1>装有Oracle数据库(因为连接的时候需要开启两项服务)

2>myeclipse或eclipse(支持WebProject的版本)开发环境,本机以myeclipse为例,二者没有什么大的区别

3>装有Tomcat,Weblogic或其它任何服务器(本机装有Tomcat6.0)

4>有Oracle数据库的厂商驱动(一般能够在Oracle安装目录下找到所需的jar包,例如本机的jar所在文件夹路径为D:oraclexeapporacleproduct11.2.0serverjdbclib)

2.新建Web项目

在myeclipse中新建一个WebProject,由于只是简单的尝试,那么就把所有代码都写在WebProject/WebRoot/index.jsp文件里好了,双击index.jsp打开编辑器

3.编码

<hr>

    <%="下面来演示Oracle数据库的增删改查操作<br>" %>

    <%

    //加载数据库的驱动类

    Connection conn = null;

    try{

    Class.forName("oracle.jdbc.driver.OracleDriver");

    }catch(Exception e){

      out.print("<br>Error:加载驱动类失败");

    }

    try{

    conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","ay","ayqy");

//特别说明:Oracle的URL格式为jdbc:oracle:thin:@[ip]:1521:[sid]

//这里的SID的值应该是数据库的Name,若是要连接到默认数据库,则SID的值为版本名,本机为XE

//数据库的Name在PLSQL Developer(一个GUI的Oracle数据库管理软件)登录时可以看到

    }catch(Exception e){

      out.print("<br>Error:获取连接失败");

      out.print("<br>" + e.getMessage());

    }

    //查

    Statement stat = conn.createStatement();

    String sql = "select * from tb_std";

    ResultSet rs = stat.executeQuery(sql);

    //显示查询结果

    out.print("num__name__date__fee__grade__calssStd__country__exFee__nation<br>");

    while(rs.next())

    {

      String num = rs.getString(1);

      String date = rs.getString(2);

      String fee = rs.getString(3);

      String grade = rs.getString(4);

      String calssStd = rs.getString(5);

      String country = rs.getString(6);

      String exFee = rs.getString(7);

      String nation = rs.getString(8);

      String name = rs.getString(9);

      out.print(num + "__" + name + "__" + date + "__" + fee + "__" + grade + "__" + calssStd + "__" + country + "__" + exFee + "__" + nation + "<br>");

    }

    

    try{

      conn.close();

      }catch(Exception e){

        out.print("<br>Error:连接关闭失败");

        out.print("<br>" + e.getMessage());

      }

    %>

注:代码中只演示了“查”操作,因为“查”操作相对比较麻烦(涉及到对查询结果的处理),而“增,删,改”都比较简单,与“查”唯一的区别是用的Statement对象的方法不同。“查”用stat.executeQuery(String sql);语句,返回一个ResultSet结果集对象,而其他三种操作都用stat.executeUpdate(String sql);语句,返回一个int类型的值,该值表示执行sql语句后受到影响的记录数(即表的行数)

4.导入jar包

本机装的Oracle数据库版本是11g,在上面提到的路径下有三个jar包,分别是ojdbc5.jar,ojdbc6.jar,ojdbc6_g.jar,5适用于较低版本的Oracle,这里为了简单起见把三个jar都导入,复制jar包到WebProject/WebRoot/WEB-INF/lib目录下。

5.开启Oracle服务

开始-所有程序-Oracle Database 11g Express Edition-启动数据库,弹出黑框,等待30秒左右即可(需要开启两个相关服务)

6.开启Tomcat服务器

6.可能遇到的异常

1>严重: Servlet.service() for servlet jsp threw exception 

java.lang.NullPointerException

分析:没有开启服务器,引起空指针异常

解决方案:在myeclipse中找到Run/Stop/Restart MyEclipse Servers快捷图标,单击小箭头,找到需要开启的服务器(如Tomcat6.x),点击Start选项启动服务器

2>有时候会发现Oracle服务和Tomcat服务不能共存(例如,启动Oracle服务后,继续启动Tomcat遇到异常,不能正常启动)

分析:这是因为8080端口被占用了,因为Oracle和Tomcat安装时默认的端口号都是8080,需要修改Tomcat默认的端口号来解决冲突

解决方案:开始-所有程序-Apache Tomcat 6.0 Tomcat6-Tomcat 6.0 Program Directory点击打开文件夹,用记事本打开conf/server.xml,Ctrl+F查找“Connector port”找到位置“<Connector port="8080" protocol="HTTP/1.1" ”把8080改为一个空闲的端口号即可(例如本机改为了9527)

3>这是一个比较奇怪的问题,本机测试逐一删除已导入的jar包,初衷是想测试项目需要的是哪一个jar文件,却发现删掉所有jar包后,项目还是可以运行

分析:可能是myeclipse自带连接Oracle数据库的jar(项目自动生成的jre中可能有所需的jar文件),因为Oracle收购的SUN,所以可能会对Oracle数据库提供特殊的支持

解决方案:为了保险起见,建议把jar文件导入项目,没有太大坏处

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

  • oracle的 连接
    评论 0 · 赞 0
  • 相关文章

    相关问题

    相关资料

    X社区推广