`
chenhua_1984
  • 浏览: 1252030 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

java编写oracle的存储过程,为什么调用System.in阻塞IO时不起作用?还报错?

    博客分类:
  • java
阅读更多

由于项目的需要,需要用java编写oracle的存储过程,在调用System.in 的时候,在eclipse里面是可以的,而放到oracle里面执行就不行了,下面是具体的代码和错误:请有这方面经验的人指教。谢谢!附件有源码,可以直接下载运行(用system或sys运行)
工具使用PL/SQL Dev,ora9i,oraclejdk1.3
  第一步:创建一个java类:

 create or replace and compile java source named TestJava as   
 import java.io.*;   
 public class TestJava   
 {   
 public static void test() throws IOException  
       {  
        String key="";  
        System.out.println("Hello....");  
        try{  
                System.out.println("Please Entry Key");  
                BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));  
   
                key = reader.readLine();   
		
           }catch(Exception ex){  
                 ex.printStackTrace();  
         }  
           System.out.println("you entry is========="+key);  
   
     }  
   }  
 

提示结果:
Java created

第二步:把这个类作为一个存储过程:

create or replace procedure testJava as language java name 'TestJava.test()';
 


  2  /
提示结果:
Procedure created

第三步:调用

SET SERVEROUTPUT ON;   
CALL dbms_java.set_output(2000);   
 


提示结果:
Method called

第四步:执行:
 在command window里输入,

exec testJava(); 
 


得到的结果:

Hello....
Please Entry Key
java.io.IOException
  at java.io.FileInputStream.readBytes(FileInputStream.java)
  at java.io.FileInputStream.read(FileInputStream.java)
  at java.io.BufferedInputStream.read1(BufferedInputStream.java)
  at java.io.BufferedInputStream.read(BufferedInputStream.java)
  at java.io.FilterInputStream.read(FilterInputStream.java)
  at java.io.InputStreamReader.fill(InputStreamReader.java)
  at java.io.InputStreamReader.read(InputStreamReader.java)
  at java.io.BufferedReader.fill(BufferedReader.java)
  at java.io.BufferedReader.readLine(BufferedReader.java)
  at java.io.BufferedReader.readLine(BufferedReader.java)
  at TestJava.test(TESTJAVA.java:13)
you entry is=========

PL/SQL procedure successfully completed
 



问题:
为什么 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
   key = reader.readLine();
执行到这句话的时候会报错,程序没有停下来等待用户输入呢?是不是应为在oracle里面对java的阻塞IO的调用方式不一样呢?不是用System.in这样的?

 

  • ccc.rar (508 Bytes)
  • 下载次数: 0
0
0
分享到:
评论
2 楼 chenhua_1984 2009-05-06  
没有朋友遇到过这样的问题吗?
1 楼 chenhua_1984 2009-05-05  
不好意义,没弄好就成了现在这个格式了!抱歉!想删除但现在又不能删除!

相关推荐

    Oracle-IO问题及性能调优.docx

    Oracle IO 问题及性能调优 Oracle IO 问题是数据库性能优化的重要方面,任何数据库系统中都存在大量的读写操作,IO 问题也往往是导致数据库性能问题的重要原因。以下是 Oracle IO 问题及性能调优的相关知识点: ...

    74个java面试题,只有题目没有答案

    多态是指在编译时不知道所调用的方法是什么,只有在运行时才能确定的机制。 * 什么是接口?接口是抽象类的集合,定义了一组方法。 * 如何使用接口?使用 implements 关键字实现接口。 4. Java 字符串 * 字符串在 ...

    oracle如何使用java source调用外部程序

    此外,`StreamGobbler`类在处理命令输出时起到了关键作用,它可以避免因等待输出流导致的阻塞,确保命令能够正常执行。如果在实际操作中遇到类似问题,如Java通过`Runtime`调用外部程序出现阻塞,可以参考相关的解决...

    java_java编程_

    在本压缩包中,我们重点关注的是"java.txt"这个文件,它很可能包含了作者在解决在线判断(OJ)平台上的Java编程题目时编写的源代码。 Java是一种跨平台、面向对象的编程语言,由Sun Microsystems(后被Oracle公司...

    java小程序题目11111111111111

    10. **IO/NIO/BIO**:Java的输入输出模型,包括传统的阻塞IO(BIO)、非阻塞IO(NIO)和异步IO(AIO)。 11. **网络编程**:Socket编程,TCP和UDP协议的理解,以及HTTP协议的基本操作。 12. **数据库操作**:JDBC...

    零基础学习java--所有代码

    11. **IO流与NIO**:Java的新IO(New IO,又称NIO)提供了一种非阻塞的I/O模型,对于处理大量并发连接非常有用。了解BufferedReader、BufferedWriter等旧IO类以及Channel、Selector等新IO类的区别和应用。 12. **...

    满天星星java源程序

    9. **IO与NIO**:Java I/O流系统和新引入的非阻塞IO(NIO)模型,为高性能网络编程提供基础。 10. **异常处理**:学习如何使用try-catch-finally语句来处理程序运行时可能遇到的问题,提高程序的健壮性。 11. **Java...

    java入门非常的浅显易懂

    12. **IO与NIO**:Java的I/O流处理能力强大,而NIO(非阻塞I/O)则为高并发应用提供了更好的性能。 13. **Java标准库**:了解并熟练使用Java的API,如util包中的各种工具类,lang包中的基础类,以及awt和swing用于...

    Java NIO 聊天室 JSwing

    import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels....

    Java官方文档API文档1.6中文版.rar

    Java官方文档API是Java开发者的重要参考资料,它详细记录了Java平台标准版(Java SE)的各种类库、接口和方法。1.6版本是SUN公司发行的最后一个官方中文版,对于那些偏好中文阅读的开发者来说,这是一个宝贵的资源。...

    Java学习笔记相关

    以上只是Java学习笔记中可能涵盖的部分主题,实际的学习过程中还会有更多深入的内容,如设计模式、并发编程、数据库连接、网络编程、GUI开发、Spring框架等。持续学习和实践将帮助你逐步掌握这个强大且广泛使用的...

    java程序设计课本代码

    5. **输入输出流**:Java.io包提供了处理输入和输出的功能,如FileInputStream和FileOutputStream用于文件操作,System.in和System.out分别代表标准输入和标准输出。 6. **多线程**:Java支持并发编程,Thread类和...

    非常详细javaSE学习笔记.rar

    1. **Java起源与环境搭建**:笔记可能会介绍Java的历史,由Sun Microsystems(现为Oracle Corporation)创建,以及如何安装和配置Java Development Kit (JDK)。 2. **Java语法基础**:包括基本数据类型(如int, ...

    Java软件开发实战 Java基础与案例开发详解 15-4 练习题 共5页.pdf

    - Java平台分为三个版本:Java SE(标准版)、Java EE(企业版)、Java ME(微型版)。 - Java SE是最基础的平台,提供了运行Java应用程序所需的核心API和服务。 - **Java SE环境安装和配置**: - 安装JDK(Java...

    java/jdk API 文档

    Java JDK API文档是Java开发人员不可或缺的参考资料,它包含了Java平台标准版(Java SE)的所有公共类、接口和方法的详细说明。这份文档是Oracle公司为开发者提供的官方指南,帮助他们理解和使用Java语言及库。在...

    Java程序设计教程ppt第四版本

    12. **IO流与NIO**:Java NIO(New IO)是Java 1.4引入的新特性,对比传统IO,NIO提供了非阻塞I/O操作。 13. **网络编程**:讲解Socket编程,实现客户端和服务端的通信,以及URL和URLConnection类的使用。 14. **...

    疯狂JAVA讲义

    学生提问:为什么我创建Java对象时从未感觉到java.lang.Object的构造器被调用过? 150 5.7 多态 151 5.7.1 多态性 151 5.7.2 引用变量的强制类型转换 152 5.7.3 instanceof运算符 154 5.8 继承与组合 154 ...

    达内java 课件(PPT)

    System.out.println("除数不能为0"); } finally { System.out.println("无论是否发生异常,这段代码都会执行"); } ``` 【集合框架】 Java集合框架包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、...

    java1.6apicn.CHM

    Java API是Java平台的标准库,由Sun Microsystems(现在是Oracle公司的一部分)开发并维护,它提供了大量的预定义类和接口,供开发者在构建应用程序时使用。这些类和接口覆盖了I/O、网络通信、多线程、集合框架、XML...

Global site tag (gtag.js) - Google Analytics