我是 Spring 的新手。这是我的代码,用于从 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;
}
}
最佳答案
从这里您可以捕获结果并以列表形式返回,
我已将每个新添加的代码解释为注释
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;
}
}
关于java - 无法返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57871446/