java - Oracle JDBC 在 Linux 上没有给出预期的输出

标签 java database linux oracle jdbc

尝试使用 Oracle DB 和 Java 应用程序以便在 Linux 平台上使用 JDBC。

下载ojdbc6.jarojdbc6dms.jar

在 Linux 上安装了 SQLDeveloper

在 SQLDeveloper 中建立了一个连接,名称为:Dummy

UserName : abc
Password : abc
DB Name : oracle
DB port : 8181

数据库中的表名:usertable 表中的列:用户名,联系人号码

表包含 3 个条目。

java代码片段是:

package com.demo.oracleDB;


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

public class JC {

    /**
     * @param args
     */
    public static void main(String[] args) {

                System.out.println("-------- Oracle JDBC Connection Testing ------");

                try {

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

                } catch (ClassNotFoundException e) {

                    System.out.println("Where is your Oracle JDBC Driver?");
                    e.printStackTrace();
                    return;

                }

                System.out.println("Oracle JDBC Driver Registered!");

                Connection connection = null;

                try {

                    connection = DriverManager.getConnection(
                            "jdbc:oracle:thin:@IP:8181:oracle", "abc",
                            "abc");


                    PreparedStatement Pstmt=connection.prepareStatement("select * from abc.usertable");
                    ResultSet rst=null;

                    rst=Pstmt.executeQuery();

                    System.out.println("Before LOOP");

                    System.out.println("Row is  "  +  rst.getRow());
                    System.out.println("Count is   "   +  rst.getFetchSize());

                    while(rst.next())
                    {
                        System.out.println("Values from DB are " );
                        System.out.println("UserName  "  +  rst.getString("username"));

                        System.out.println("Contact NUmber   "  +  rst.getString("contactnumber"));
                    }

                } catch (SQLException e) {

                    System.out.println("Connection Failed! Check output console");
                    e.printStackTrace();
                    return;

                }

                if (connection != null) {
                    System.out.println("You made it.");
                } else {
                    System.out.println("Failed to make connection!");
                }
            }

        }

Linux 上的输出是

-------- Oracle JDBC Connection Testing ------
Oracle JDBC Driver Registered!
Before LOOP
Row is  0
Count is   10

尽管计数显示为 10,但不知道为什么它不进入 ResultSet 循环表中仅存在 3 个条目,但计数仍显示为 10。

谁能告诉我查询字符串是否正确。

有人可以指导我如何让它工作,以便它开始从控制台上的表打印数据。

最佳答案

提取大小与返回的总行数不同。

例如,如果您的查询找到 10,000 个匹配项,它不会从数据库中返回所有 10,000 行。这是获取大小发挥作用的地方。如果 fetchSize 为 10,则它最初会检索前十行。

关于java - Oracle JDBC 在 Linux 上没有给出预期的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16965431/

相关文章:

Java 泛型、扩展泛型和抽象类

java - @AutoAnnotation 有什么用?怎么可以用呢?

mysql - 复杂的查询逻辑

sql - 在未识别的 SQL Server 上创建的主键

c - Linux C 套接字 UDP 服务器。 select() 没有收到任何信息

java - CORS 错误和带有 JWT token 的 403 响应

java - 使用 EMF 处理多个 xml 文件

sql - 不使用关系数据库的充分理由?

linux - 时间 "command"让您的配置文件运行。是否有一个命令可以让您分析最大和平均内存消耗?

python - 在 Linux 初始化脚本中使用 STDIN