两台Linux计算机上的Oracle jdbc连接

时间:2012-03-16 06:56:02

标签: java linux oracle jdbc

我使用cat5交叉以太网电缆连接了我的两台笔记本电脑。两者都安装了linux ubuntu。

Lappi 1: $ ifconfig eth0 192.168.1.16 up
Lappi 2: $ ifconfig eth0 192.168.1.17 up

都通过有线以太网连接

连接
ping lappi 1: $ ping 192.168.1.17
give bytes means working

ping lappi 2: $ ping 192.168.1.16
working

lappi 1上安装了oracle xe 10g。

我想在lappi-1的oracle数据库中使用lappi-2获取一些行。

这是代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class servertest 
{
    public void test() throws ClassNotFoundException, SQLException
    {
        Class.forName ("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@192.168.1.16:1521:XE","scott","tiger");
        Statement stmt = conn.createStatement();
        String query = "select  email_to from createemail";
        ResultSet rset = stmt.executeQuery(query);  

        while(rset.next())
        {
            System.out.println(rset.getString(0));  
        }
    }

    public static void main(String args[]) throws ClassNotFoundException, SQLException
    {
        servertest obj = new servertest();
        obj.test();
    }
}

它没有给我任何错误。但它也没有检索任何行。有时我会收到错误“无法建立连接”......(偶尔)]

3 个答案:

答案 0 :(得分:1)

我在代码中没有看到任何问题。也许它不会返回行,因为没有任何行。它可能会返回连接错误,因为链接确实已关闭(可能是电缆损坏了......)。

Java有非常好的错误报告,只需仔细阅读邮件即可。如果它报告无法连接,请99%确定是网络问题。如果没有行,请仔细检查您是否选择了正确的表格等。

请遵循Java命名约定:类名以大写字母开头。

答案 1 :(得分:0)

  

它没有给我任何错误..但不检索行。有时给   连接无法确定错误...(偶尔)]

有时?检查网络连接并确保其延迟较低。还要确保防火墙和端口是打开的,并为这两台计算机正确设置。当表空为逻辑时,ResultSet返回空。所以你应该检查你的表中是否有数据。

不是抛出异常,为什么不尝试捕获每个特定的异常?我的观点是,通过捕获每个可能的特定异常,您确切地知道出了什么问题。在你目前的情况下,这种策略是好的。如果是ClassNotFoundException异常,请打印有用的消息。如果是IOException,则打印有用的消息。

答案 2 :(得分:0)

这个问题已经很老了,但是这里的问题很严重:

我在代码中看到的一个问题应该抛出SQLException: 当您获取数据时,您将获得第0列(rset.getString(0)) 在JDBC专栏文章中字段索引从1开始,而不是0!