簡體   English   中英

結果集列表 <Product> 和清單 <Map<String, String> &gt;

[英]ResultSet to List<Product> and List<Map<String, String>>

今天您好,我需要幫助才能將數據從resultSet獲取到我的列表。 它與我的List>正常工作,但是當我嘗試將其重新編碼為List時,它返回null

在CMD中,我嘗試使用System.out打印

這就是我的List <Map <String <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,但返回ID:1234

這是List <Map <字符串,字符串>>的代碼

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我的List <產品>?

如果缺少一些對我的代碼至關重要的東西,請發表評論,如果有,我會添加它^ _ ^

以下值變為NULL的原因

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

因為您必須在GetDataList類中的while塊內部打印此行

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

使用標簽來檢索列值,而不是像其他類GetData那樣檢索列順序。在GetData類中,它按您的方式工作,因此絕對可以在GetDataList類中使用。 但是仍然如果您必須使用列順序從Resultset中檢索值,請確保您的列順序正確。您的代碼應按以下方式運行

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM