java - 结果集为 List<Product> 和 List<Map<String, String>>

标签 java android list resultset

您好,今天我需要帮助将结果集中的数据获取到我的列表。它与我的 List> 配合得很好,但是当我尝试将其重新编码到我的 List 时,它返回 null

在 CMD 中我尝试使用 System.out 打印它

这就是我的列表< Map< String, String >>

中的样子
I/System.out(15168): connectcom.mysql.jdbc.JDBC4Connection@31e2b7ce
I/System.out(15168): rs = com.mysql.jdbc.JDBC4ResultSet@18c765fc
I/System.out(15168): stmt = com.mysql.jdbc.StatementImpl@8dd36ef
I/System.out(15168): else
I/System.out(15168): while
I/System.out(15168): 1
I/System.out(15168): while
I/System.out(15168): 2
I/System.out(15168): while
I/System.out(15168): 3
I/System.out(15168): while
I/System.out(15168): 4

这是我的列表<产品>中的System.out

I/System.out(16051): DID try
I/System.out(16051): connectcom.mysql.jdbc.JDBC4Connection@31e2b7ce
I/System.out(16051): query = select * from countries
I/System.out(16051): rs = com.mysql.jdbc.JDBC4ResultSet@18c765fc
I/System.out(16051): stmt = com.mysql.jdbc.StatementImpl@8dd36ef
I/System.out(16051): else
I/System.out(16051): ID: null

如您所见,它返回 null,而在 Map 中它返回 ID:1234

这是List>的代码

package com.mackhielan.firebasecloudmessaging;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by McKhee on Nov 22 2017.
 */

public class GetData {
    Connection connect;
    String ConnectionResult = "";
    Boolean isSuccess= false;

    public List<Map<String, String>> getData() {
        List<Map<String,String>> data = null;
            data = new ArrayList<Map<String,String>>();

            try {
                ConnectionHelper connectionHelper = new ConnectionHelper();
                connect = connectionHelper.connections();
                System.out.println("connect" + connect);
                if(connect == null){
                    ConnectionResult = "Check Your Internet Access";
                    System.out.println("if");
                    System.out.println("CR = " + ConnectionResult);
                }
                else{
                    String query = "select * from countries";
                    Statement stmt = connect.createStatement();
                    ResultSet rs = stmt.executeQuery(query);
                    System.out.println("rs = " + rs);
                    System.out.println("stmt = " + stmt);
                    System.out.println("else");

                    while(rs.next()) {
                        Map<String,String> datanum = new HashMap<String, String>();
                        datanum.put("ID", rs.getString("CountryId"));//datanum.put("somethingLikeID", rs.getString("yourColumnNameOne"));
                        datanum.put("Country", rs.getString("CountryName"));//datanum.put("somethingLikeName", rs.getString("yourColumnNameTwo"));
                        datanum.put("Capital", rs.getString("CapitalCity"));//datanum.put("somethingLikeAddress", rs.getString("yourColumnNameThree"));
                        data.add(datanum);
                        System.out.println("while");
                        System.out.println(rs.getString("CountryId"));
                    }

                    ConnectionResult = "Successful";
                    isSuccess=true;
                    connect.close();
                }
            }
            catch (Exception ex) {
                isSuccess = false;
                ConnectionResult = ex.getMessage();
                System.out.println(ConnectionResult);
            }
            return data;
    }
}

对于列表<产品>

package com.mackhielan.firebasecloudmessaging;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;


/**
 * Created by McKhee on Nov 27 2017.
 */

public class GetDataList {
    Connection connect;
    String ConnectionResult = "";
    Boolean isSuccess= false;

    public List<Product> getListProduct() {
        Product product = null;
        List<Product> productList = new ArrayList<>();

        try {
            System.out.println("DID try");
            ConnectionHelper connectionHelper = new ConnectionHelper();
            connect = connectionHelper.connections();

            System.out.println("connect" + connect);
            if(connect == null){
                ConnectionResult = "Check Your Internet Access";
                System.out.println("if");
                System.out.println("CR = " + ConnectionResult);
            }
            else{
                String query = "select * from countries";
                Statement stmt = connect.createStatement();
                ResultSet rs = stmt.executeQuery(query);
                System.out.println("query = " + query);
                System.out.println("rs = " + rs.toString());
                System.out.println("stmt = " + stmt.toString());
                System.out.println("else");
                System.out.print("ID: ");
                System.out.println("ID: " + rs.getInt("CountryId"));
                while(rs.next()) {
                    product = new Product(rs.getInt(0), rs.getString(1),  rs.getString(2));
                    productList.add(product);

                }

                ConnectionResult = "Successful";
                isSuccess=true;
                connect.close();
            }
        }
        catch (Exception ex) {
            isSuccess = false;
            ConnectionResult = ex.getMessage();
            System.out.println(ConnectionResult);
        }
        return productList;
    }

}

MainActivity.java

package com.mackhielan.firebasecloudmessaging;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {
    ListView LV_Data;
    SimpleAdapter AD;
    private ListProductAdapter adapter;
    private List<Product> mProductList;
    private GetDataList gdl;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LV_Data = (ListView)findViewById(R.id.LV_Data);
        gdl = new GetDataList();

        try {
            mProductList = gdl.getListProduct();
            adapter = new ListProductAdapter(this, mProductList);
            LV_Data.setAdapter(AD);
        }
        catch (Exception e) {
            Log.e("Error Here", e.getMessage());
        }
    }
}

任何想法为什么它返回 NULL 我的列表<产品>????

如果缺少对我的代码至关重要的东西,请发表评论,如果我有它,我会添加它 ^_^

最佳答案

以下值为 NULL 的原因

I/System.out(16051): ID: null 

因为您必须在 GetDataList 类的 while block 内打印此行

 //System.out.println("ID: " + rs.getInt("CountryId"));
 while(rs.next()) {
       System.out.println("ID: " + rs.getInt("CountryId"));

使用标签来检索列值,而不是像其他类 GetData 那样的列顺序。在 GetData 类中,它按照您的方式工作,所以它肯定也可以在 GetDataList 类中工作。但如果您必须使用列顺序从结果集中检索值,请确保您的列顺序正确。您的代码应如下运行

    while(rs.next()) {
         product = new Product(rs.getString("CountryId"), rs.getString("CountryName"),  rs.getString("CapitalCity"));
         productList.add(product);
}

关于java - 结果集为 List<Product> 和 List<Map<String, String>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47522959/

相关文章:

java - 纯面向对象语言和面向对象语言的区别

python - 为什么我的解决方案打印在一个列表中而不是逐项打印?

Python读取DOT格式的文件并返回城市名称列表

java - 另一个学习 Java 的难题

java - acm.graphics 库 - 小程序启动

android - 如何在不模糊的情况下或使用 picasso 调整图像大小

java - android 缓存 > 内部存储与对象缓存

Android 用户权限访问互联网

java - 创建可变参数的 List<?>

java - Android SQLiteOpenHelper更新方法不起作用