Java JDBC-以列表形式检索整个数据

Java JDBC-以列表形式检索整个数据,java,database,jdbc,Java,Database,Jdbc,我试图构建一个类,从MySQL表中检索每一行并将其存储到一个列表中,但我的代码没有编译并抛出一个错误 错误:在类中找不到主方法 MySQLAccountsDatabankReader, 请将main方法定义为:publicstaticvoidmain(String[] args) 导入java.sql.Connection; 导入java.sql.DriverManager; 导入java.sql.ResultSet; 导入java.sql.SQLException; 导入java.sql.St

我试图构建一个类,从MySQL表中检索每一行并将其存储到一个列表中,但我的代码没有编译并抛出一个错误

错误:在类中找不到主方法 MySQLAccountsDatabankReader, 请将main方法定义为:publicstaticvoidmain(String[] args)

导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.sql.Statement;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.logging.Level;
导入java.util.logging.Logger;
公共类MySQLAccountsDatabankReader{
私有静态列表帐户;
公共MySQLAccountsDatabankReader(字符串[]args){
连接con=null;
语句st=null;
结果集rs=null;
String url=“jdbc:mysql://localhost:3306/test";
字符串user=“root”;
字符串password=“mysql”;
试一试{
con=DriverManager.getConnection(url、用户、密码);
st=con.createStatement();
rs=st.executeQuery(“从test.accounts中选择*”;
如果(rs.next()){
ArrayList accounts=新的ArrayList();
rs=st.executeQuery(“从test.accounts中选择*”;
int columnCount=rs.getMetaData().getColumnCount();
while(rs.next()){
String[]行=新字符串[columnCount];
对于(int i=0;i
版本0.2-我遇到以下编译错误-线程“main”java.lang.error中出现异常:未解决的编译问题: 无法解析帐户 无法将帐户解析为变量

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

public class MySQLAccountsDatabankReader {

    public static void main(String[] args) {

        MySQLAccountsDatabankReader reader = new MySQLAccountsDatabankReader();

        List<String[]> accounts = reader.getAccounts();

    }

    public List<String[]> getAccounts() {

        Connection con = null;
        Statement st = null;
        ResultSet rs = null;

        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "mysql";

        try {
            con = DriverManager.getConnection(url, user, password);
            st = con.createStatement();
            rs = st.executeQuery("SELECT * FROM test.accounts;");

            if (rs.next()) {

                rs = st.executeQuery("SELECT * FROM test.accounts;");
                int columnCount = rs.getMetaData().getColumnCount();
                while (rs.next()) {
                    String[] row = new String[columnCount];
                    for (int i = 0; i < columnCount; i++) {
                        row[i] = rs.getString(i + 1);
                    }
                    accounts.add(row);

                }
                return accounts;

            }
        } catch (SQLException ex) {
            Logger lgr = Logger.getLogger(MySQLAccountsDatabankReader.class
                    .getName());
            lgr.log(Level.SEVERE, ex.getMessage(), ex);

        } finally {
            try {
                if (rs != null) {
                    rs.close();
                }
                if (st != null) {
                    st.close();
                }
                if (con != null) {
                    con.close();
                }

            } catch (SQLException ex) {
                Logger lgr = Logger.getLogger(MySQLAccountsDatabankReader.class
                        .getName());
                lgr.log(Level.WARNING, ex.getMessage(), ex);
            }
        }

    }

}
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.sql.Statement;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.logging.Level;
导入java.util.logging.Logger;
公共类MySQLAccountsDatabankReader{
公共静态void main(字符串[]args){
MySQLAccountsDatabankReader=新的MySQLAccountsDatabankReader();
List accounts=reader.getAccounts();
}
公共帐户列表(){
连接con=null;
语句st=null;
结果集rs=null;
String url=“jdbc:mysql://localhost:3306/test";
字符串user=“root”;
字符串password=“mysql”;
试一试{
con=DriverManager.getConnection(url、用户、密码);
st=con.createStatement();
rs=st.executeQuery(“从test.accounts中选择*”;
如果(rs.next()){
rs=st.executeQuery(“从test.accounts中选择*”;
int columnCount=rs.getMetaData().getColumnCount();
while(rs.next()){
String[]行=新字符串[columnCount];
对于(int i=0;i
编译器错误通常是错误的一个很好的指示器-您需要一个
main
方法

此外,非声明性语句需要在方法、构造函数或静态初始值设定项中,而不是在类代码块中。将您的
JDBC
代码放在一个方法中。这里您需要一个返回
帐户
的方法来匹配
返回
语句。您还需要创建
List
的实例,例如
ArrayList
以返回

private List<String[]> getAccounts() {
   List<String[]> accounts = new ArrayList<String[]>();
   ...

   return accounts;
}
添加主要方法:

public static void main(String [] args) {
  new MySQLAccountsDatabankReader(args);
}

感谢您的快速响应,但在我像这样重新考虑之后,我在“main”线程中遇到了异常java.lang.Error:未解决的编译问题:无法解决帐户无法解决帐户无法解析为变量在开始或方法中创建新的
ArrayList
,并将return语句作为最后一个语句,以确保返回内容。请参阅更新。
public static void main(String[] args) {

   MySQLAccountsDatabankReader reader = new MySQLAccountsDatabankReader();
   List<String[]> accounts = reader.getAccounts();
   ...
}
public static void main(String [] args) {
  new MySQLAccountsDatabankReader(args);
}