首页 > 解决方案 > 无法返回值

问题描述

我是春天的新手。这是我从 Access DB 文件返回值的代码,我需要在返回中捕获响应。

我以不同的方式尝试过,没有人喜欢它。

无法从以下代码的输出中捕获返回。

我在我的 Jdeveloper 中运行它。

任何想法将不胜感激。

    package accessdatatoebs;

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


public class AccessClass {
        public AccessClass() {
          super();
        }

        public static void main(String[] args) {

            // variables
            Connection connection = null;
            Statement statement = null;
            ResultSet resultSet = null;

            // Step 1: Loading or 
            // registering Oracle JDBC driver class
            try {
                Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
            }
            catch(ClassNotFoundException cnfex) {
                System.out.println("Problem in loading"
                        + " MS Access JDBC driver");
                cnfex.printStackTrace();
            }

            // Step 2: Opening database connection

                try {

                           String msAccDB = "G:\\RMMDB\\RM.mdb";
                            String dbURL = "jdbc:ucanaccess://" +msAccDB; 

                // Step 2.A: Create and 
                // get connection using DriverManager class
                connection = DriverManager.getConnection(dbURL); 

                // Step 2.B: Creating JDBC Statement 
                statement = connection.createStatement();

                // Step 2.C: Executing SQL and
                // retrieve data into ResultSet
                resultSet = statement
                        .executeQuery("SELECT * FROM tbl_Materials");

               // System.out.println("ID\tName\t\t\tAge\tMatches");
               System.out.println("Material\tAccount");
                System.out.println("====\t========");

                // processing returned data and printing into console
                while(resultSet.next()) {
                    System.out.println(resultSet.getInt(1) + "\t" + 
                            resultSet.getString(2) + "\t" + 
                            resultSet.getString(3) + "\t" +
                            resultSet.getString(4));
                }
            }

            catch(SQLException sqlex){
                sqlex.printStackTrace();
            }
            finally {
                // Step 3: Closing database connection
                try {
                    if(null != connection) {

                        // cleanup resources, once after processing
                        resultSet.close();
                        statement.close();

                        // and then finally close connection
                        connection.close();
                    }
                }
                catch (SQLException sqlex) {
                    sqlex.printStackTrace();
                }
            }
        return resultSet; 
        }
    }

标签: javaspring

解决方案


从这里您可以捕获结果并作为列表返回,

我已经解释为注释的每个新添加的代码

public class AccessClass {
      public AccessClass() {
        super();
      }

      public static void main(String[] args) {
//and In here I am trying to call Static method of AccessClass and Stream it 
          AccessClass.getResutFromDB().stream().forEach(result->System.out.println(result));

            // above line I used to java 8 stream api 
   // in here you can use simple method to do it      
  //for (Integer integer : result) {
 // System.out.println("result from databse  "+integer);
//}
      }
// Added separated method  and It return Integer List
      public static List<Integer> getResutFromDB() {
// you can see i have declared integer list
          List<Integer> addIntegerResult=new ArrayList<>();

          // variables
          Connection connection = null;
          Statement statement = null;
          ResultSet resultSet = null;

          // Step 1: Loading or 
          // registering Oracle JDBC driver class
          try {
              Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
          }
          catch(ClassNotFoundException cnfex) {
              System.out.println("Problem in loading"
                      + " MS Access JDBC driver");
              cnfex.printStackTrace();
          }

          // Step 2: Opening database connection

              try {

                         String msAccDB = "G:\\RMMDB\\RM.mdb";
                          String dbURL = "jdbc:ucanaccess://" +msAccDB; 

              // Step 2.A: Create and 
              // get connection using DriverManager class
              connection = DriverManager.getConnection(dbURL); 

              // Step 2.B: Creating JDBC Statement 
              statement = connection.createStatement();

              // Step 2.C: Executing SQL and
              // retrieve data into ResultSet
              resultSet = statement
                      .executeQuery("SELECT * FROM tbl_Materials");

             // System.out.println("ID\tName\t\t\tAge\tMatches");
             System.out.println("Material\tAccount");
              System.out.println("====\t========");

              // processing returned data and printing into console
              while(resultSet.next()) {
// in here I have catch the result  and adding  to integer result to Integer List
                  addIntegerResult.add(resultSet.getInt(1));
                  addIntegerResult.add(resultSet.getInt(2));
                  addIntegerResult.add(resultSet.getInt(3));
                  addIntegerResult.add(resultSet.getInt(4));


              }

          }

          catch(SQLException sqlex){
              sqlex.printStackTrace();
          }
          finally {
              // Step 3: Closing database connection
              try {
                  if(null != connection) {

                      // cleanup resources, once after processing
                      resultSet.close();
                      statement.close();

                      // and then finally close connection
                      connection.close();
                  }
              }
              catch (SQLException sqlex) {
                  sqlex.printStackTrace();
              }
          }
//In here I am trying to return as List
      return addIntegerResult; 
      }

  }

推荐阅读