Java 从mysql表获取元素到arraylist

Java 从mysql表获取元素到arraylist,java,mysql,jdbc,arraylist,Java,Mysql,Jdbc,Arraylist,我有一个ArrayList,如下所示: [ 1 2011-05-10 1 22.0, 2 2011-05-10 2 5555.0, 3 2011-05-11 3 123.0, 4 2011-05-11 2 212.0, 5 2011-05-30 1 3000.0, 6 2011-05-30 1 30.0, 7 2011-06-06 1 307.0, 8 2011-06-06 1 307.0, 9 2011-06-06 1 307.0, 10

我有一个ArrayList,如下所示:

[
1 2011-05-10  1  22.0, 
2 2011-05-10  2  5555.0, 
3 2011-05-11  3  123.0, 
4 2011-05-11  2  212.0, 
5 2011-05-30  1  3000.0, 
6 2011-05-30  1  30.0, 
7 2011-06-06  1  307.0, 
8 2011-06-06  1  307.0, 
9 2011-06-06  1  307.0, 
10 2011-06-08  2  3070.0, 
11 2011-06-03  2  356.0, 
12 2011-05-10  2  100.0, 
13 2011-05-30  1  3500.0, 
14 2011-05-10  3  1000.0, 
15 2011-05-10  3  1000.0, 
16 2011-05-07  1  5000.0, 
17 2011-05-07  4  500.0, 
18 2011-08-07  3  1500.0, 
19 2011-08-08  6  11500.0, 
20 2011-08-08  4  11500.0, 
21 2011-08-08  7  11500.0, 
22 2011-06-07  8  3000.0]
以下是我获取此arraylist的代码:

@Override
    public ArrayList<Expenses> getExpenses() {
        ArrayList<Expenses> expenses = new ArrayList<Expenses>();
        try {
            Statement stmt = myConnection.createStatement();
            ResultSet result = stmt.executeQuery("SELECT * FROM expenses");
            while(result.next()){

                Expenses expense = new Expenses();
                expense.setNum(result.getInt(1));
                expense.setPayment(result.getString(2));
                expense.setReceiver(result.getInt(3));
                expense.setValue(result.getDouble(4));

                expenses.add(expense);

                }
        }
            catch (SQLException e){
                 System.out.println(e.getMessage());
             }
        return expenses;
    }
@覆盖
公共阵列列表getExpenses(){
ArrayList费用=新建ArrayList();
试一试{
语句stmt=myConnection.createStatement();
结果集结果=stmt.executeQuery(“从费用中选择*);
while(result.next()){
费用=新费用();
expense.setNum(result.getInt(1));
expense.setPayment(result.getString(2));
费用.setReceiver(result.getInt(3));
expense.setValue(result.getDouble(4));
费用。添加(费用);
}
}
捕获(SQLE异常){
System.out.println(e.getMessage());
}
退货费用;
}

但是我想得到的是一个arraylist,这样数组的每个元素都不是表中的行(我现在拥有的),但是表中的每个元素都应该是数组的元素([1,2011-05-10,1,22.0,2,2011-05-10,2,5555.0,3,2011-05-11,3,123.0,]。有人能帮我吗?

唯一可以添加到不同类型的ArrayList元素的方法是将它们视为常规对象。不过,您已有的代码要优越得多

@Override
public ArrayList<Object> getExpenses() {
    ArrayList<Object> expenses = new ArrayList<Object>();
    try {
        Statement stmt = myConnection.createStatement();
        ResultSet result = stmt.executeQuery("SELECT * FROM expenses");
        while(result.next()) {

            expenses.add(new Integer(result.getInt(1)));

            expenses.add(result.getString(2));
            expenses.add(new Integer(result.getInt(3)));
            expenses.add(result.getDouble(4));
        }
    }
    catch (SQLException e) {
        System.out.println(e.getMessage());
    }
    return expenses;
}
@覆盖
公共阵列列表getExpenses(){
ArrayList费用=新建ArrayList();
试一试{
语句stmt=myConnection.createStatement();
结果集结果=stmt.executeQuery(“从费用中选择*);
while(result.next()){
add(新整数(result.getInt(1));
expenses.add(result.getString(2));
add(新整数(result.getInt(3));
费用。添加(result.getDouble(4));
}
}
捕获(SQLE异常){
System.out.println(e.getMessage());
}
退货费用;
}

将不同类型的元素添加到ArrayList中的唯一方法是将它们视为常规对象。不过,您现有的代码要优越得多

@Override
public ArrayList<Object> getExpenses() {
    ArrayList<Object> expenses = new ArrayList<Object>();
    try {
        Statement stmt = myConnection.createStatement();
        ResultSet result = stmt.executeQuery("SELECT * FROM expenses");
        while(result.next()) {

            expenses.add(new Integer(result.getInt(1)));

            expenses.add(result.getString(2));
            expenses.add(new Integer(result.getInt(3)));
            expenses.add(result.getDouble(4));
        }
    }
    catch (SQLException e) {
        System.out.println(e.getMessage());
    }
    return expenses;
}
@覆盖
公共阵列列表getExpenses(){
ArrayList费用=新建ArrayList();
试一试{
语句stmt=myConnection.createStatement();
结果集结果=stmt.executeQuery(“从费用中选择*);
while(result.next()){
add(新整数(result.getInt(1));
expenses.add(result.getString(2));
add(新整数(result.getInt(3));
费用。添加(result.getDouble(4));
}
}
捕获(SQLE异常){
System.out.println(e.getMessage());
}
退货费用;
}

既然您在评论中说您希望获得一个
字符串的
数组列表
,那么下面应该可以:

@Override
public ArrayList<String> getExpenses() {
    ArrayList<String> expenses = new ArrayList<String>();
    try {
        Statement stmt = myConnection.createStatement();
        ResultSet result = stmt.executeQuery("SELECT * FROM expenses");
        while (result.next()) {
            expenses.add(result.getString(1));
            expenses.add(result.getString(2));
            expenses.add(result.getString(3));
            expenses.add(result.getString(4));
        }
    }
    catch (SQLException e) {
        System.out.println(e.getMessage());
    }
    return expenses;
}
@覆盖
公共阵列列表getExpenses(){
ArrayList费用=新建ArrayList();
试一试{
语句stmt=myConnection.createStatement();
结果集结果=stmt.executeQuery(“从费用中选择*);
while(result.next()){
expenses.add(result.getString(1));
expenses.add(result.getString(2));
expenses.add(result.getString(3));
expenses.add(result.getString(4));
}
}
捕获(SQLE异常){
System.out.println(e.getMessage());
}
退货费用;
}
在附录B中,大多数SQL类型(包括此处使用的所有类型)都可以使用
Statement.getString()
作为字符串检索


另外,在使用完每个JDBC语句后立即关闭它被认为是一种良好的做法。这通常在
finally
块中完成(或者在Java 7中,使用
try
-with resources构造)。请参见

因为您在评论中说,您希望获得一个
字符串的
数组列表
,所以以下操作应该有效:

@Override
public ArrayList<String> getExpenses() {
    ArrayList<String> expenses = new ArrayList<String>();
    try {
        Statement stmt = myConnection.createStatement();
        ResultSet result = stmt.executeQuery("SELECT * FROM expenses");
        while (result.next()) {
            expenses.add(result.getString(1));
            expenses.add(result.getString(2));
            expenses.add(result.getString(3));
            expenses.add(result.getString(4));
        }
    }
    catch (SQLException e) {
        System.out.println(e.getMessage());
    }
    return expenses;
}
@覆盖
公共阵列列表getExpenses(){
ArrayList费用=新建ArrayList();
试一试{
语句stmt=myConnection.createStatement();
结果集结果=stmt.executeQuery(“从费用中选择*);
while(result.next()){
expenses.add(result.getString(1));
expenses.add(result.getString(2));
expenses.add(result.getString(3));
expenses.add(result.getString(4));
}
}
捕获(SQLE异常){
System.out.println(e.getMessage());
}
退货费用;
}
在附录B中,大多数SQL类型(包括此处使用的所有类型)都可以使用
Statement.getString()
作为字符串检索

另一方面,在使用完每个JDBC语句后立即关闭它被认为是一种良好的做法。这通常在
finally
块中完成(或者在Java 7中,使用
try
-with resources构造)。请参阅
@Override
公共阵列列表getExpenses(){
ArrayList费用=新建ArrayList();
试一试{
语句stmt=myConnection.createStatement();
结果集结果=stmt.executeQuery(“从费用中选择*);
while(result.next()){
字符串费用=null;
setExpense(result.getInt(1.toString());
费用。添加(getExpense());
setExpense(result.getString(2));
费用。添加(getExpense());
setExpense(result.getInt(3.toString());
费用。添加(getExpense());
setExpense(result.getDouble(4.toString());
费用。添加(getExpense());
}
}
捕获(SQLE异常){
System.out.println(e.getMessage());
}
退货费用;
}
//相应地制定费用的制定者
@覆盖
公共阵列列表getExpenses(){
ArrayList费用=新建ArrayList();
试一试{
语句stmt=myConnection.createStatement();
雷斯