java - 无法返回值
问题描述
我是春天的新手。这是我从 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;
}
}
推荐阅读
- c# - 简单的异步任务无法在 Wpf 应用程序中继续,但在控制台应用程序中有效
- reactjs - 如何在自定义 3d 对象(.obj)上添加自定义 3d 对象材质(.mtl)?
- azure-devops - 如何获取 Azure Devops API 的 PackageID?
- pyspark - 关闭通过 django 应用程序中的 Celery 任务启动的 spark 上下文
- python - 如何在不丢失 Pandas 数据框中的日期类型的情况下转换具有特定格式的日期
- c - C 中的 Exec 系列用法
- c++ - 我可以在同一个表达式中多次使用对象而不安全地修改它吗?
- mysql - MYSQL 将列转换为具有列名的行
- javascript - Javascript 调度事件
- json - Python Os.walk 错过了目录中要处理的几个文件