Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jdbc从数据库返回未扩展的结果_Java_Oracle_Jdbc - Fatal编程技术网

Java Jdbc从数据库返回未扩展的结果

Java Jdbc从数据库返回未扩展的结果,java,oracle,jdbc,Java,Oracle,Jdbc,这里的代码从数据库返回时返回了错误/意外的结果。我想不出这个问题。这是密码 import java.sql.*; class test1 { public static void main(String [] args) { try { Class.forName("oracle.jdbc.OracleDriver"); System.out.println("Driver loaded successfully"); }

这里的代码从数据库返回时返回了错误/意外的结果。我想不出这个问题。这是密码

import java.sql.*;

class test1
{
 public static void main(String [] args)
 {
    try
    {
        Class.forName("oracle.jdbc.OracleDriver");    

        System.out.println("Driver loaded successfully");
    }
    catch(ClassNotFoundException ex)
    {
        System.out.println("Could not load "+ex.getMessage());
        System.exit(0);
    }
    Connection con=null; 
    try
    {
        con=DriverManager.getConnection("jdbc:oracle:thin:@//Apoorv-PC:1521/orcl","scott","tiger");
        Statement st=con.createStatement();  
        //st.setMaxRows(2);
        //System.out.println(st.getMaxRows());
        ResultSet rs=st.executeQuery("Select park_space from park_available where area='M.P.Nagar'"); 

        while(rs.next())
        {    
            String p=rs.getString(1);
            System.out.println(" "+p);
        }   
        con.close();
        System.out.println("Connection closed!");
    }
    catch(SQLException e)
    {
        System.out.println("Error in database"+e.getMessage());
    }
    if(con!=null)
    {
        System.out.println("Successful!");
    }
 }  
}
oracle中的My park_available表有5列:area(varchar2)、arr_date(varchar2)、arr_time(varchar2)、park_space(number)、dept_time(varchar2)

这里我试图访问第4列“park_space”,它的每一行的值为“10”,但这里的代码在与getInt()一起使用时返回0,在使用getString()时返回null

我是否必须使用rs.next()方法,因为根据我的代码,返回的结果是特定行的特定列,即仅一个值?

尝试以下操作:

while(rs.next()) {    
    BigDecimal p=rs.getBigDecimal(1);
    System.out.println(" "+p);
}
我想,因为您的列是一个数字,所以它对于int来说太大了(例如,请参阅Oracle关于数据taype映射的注释:)

[编辑] 要导入“java.math.BigDecimal”,您必须添加如下导入语句:

import java.sql.*;
import java.math.BigDecimal;

到Java文件的开头。

为了验证您的驱动程序没有问题,这里有一个完整的测试程序:

Dear The above your code is write no problem.

I think May be problem in Your Connection URL Check that Once clearly...

I was Executed code in Eclipse with localhost url i got output.No Errors

See Code Bellow

    import java.sql.*;

class test1
{
 public static void main(String [] args)
 {
    try
    {
        Class.forName("oracle.jdbc.OracleDriver");    

        System.out.println("Driver loaded successfully");
    }
    catch(ClassNotFoundException ex)
    {
        System.out.println("Could not load "+ex.getMessage());
        System.exit(0);
    }
    Connection con=null; 
    try
    {
        con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521","sample1","sample1");
        Statement st=con.createStatement();  
        //st.setMaxRows(2);
        //System.out.println(st.getMaxRows());
        ResultSet rs=st.executeQuery("Select park_space from park_available where area='M.P.Nagar'"); 

        while(rs.next())
        {    
            String p=rs.getString(1);
            System.out.println(" "+p);
        }   
        con.close();
        System.out.println("Connection closed!");
    }
    catch(SQLException e)
    {
        System.out.println("Error in database"+e.getMessage());
    }
    if(con!=null)
    {
        System.out.println("Successful!");
    }
 }  
}
public static void main(String[] args) throws Exception {
    try (Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@...", "...", "...")) {
        try {
            try (Statement stmt = conn.createStatement()) {
                stmt.executeUpdate("CREATE TABLE NUMBER_TEST ( COL1 NUMBER )");
            }
            try (PreparedStatement stmt = conn.prepareStatement("INSERT INTO NUMBER_TEST VALUES (?)")) {
                Random rnd = new Random();
                for (int i = 0; i < 10; i++) {
                    stmt.setDouble(1, rnd.nextDouble() * 100.0);
                    stmt.executeUpdate();
                }
            }
            try (Statement stmt = conn.createStatement();
                 ResultSet rs = stmt.executeQuery("SELECT COL1 FROM NUMBER_TEST")) {
                while (rs.next()) {
                    System.out.println(rs.getInt(1) + "  " + rs.getDouble(1) + "  " + rs.getString(1));
                }
            }
        } finally {
            try (Statement stmt = conn.createStatement()) {
                stmt.executeUpdate("DROP TABLE NUMBER_TEST");
            } catch (Exception e) {
                System.out.println("DROP failed: " + e);
            }
        }
    }
}
如您所见,
getInt
getDouble
getString
都返回良好的数据

在11.2.0.4JDBC驱动程序上针对9.2数据库进行测试

while(rs.next())
        {    
            String p=rs.getInt(1);
            System.out.println(" "+p);
        }   

@Apoorv singhai
您正在尝试接受字符串输入,而您的列由数字数据类型组成,请改用此代码。

您能否提供“创建表…”脚本?我想看看这些列有什么类型。
getString(1)
…这不返回第二列吗,它在您的RS中不存在吗?park\u space是数字数据类型rest all是varchar2type@Zirconrs中仅存在一列和一行。。。。如果我传递0或2或除1以外的任何值,它会生成“无效列索引”错误。您确定选定的行都有“10”作为park_space列的值吗?可能您已经在未提交的会话中插入/更新了它?它生成的“找不到符号错误”是否需要导入一些packageBigDecimal位于java.math中。您必须在java文件的开头添加一个“import java.math.BigDecimal;”,就在“import java.sql.*;”行下面。好的,谢谢。它正在工作。它与int一起工作,只是我连接到了另一个数据库。是我的错。