![](/img/trans.png)
[英]How to transform a Map<String, List<String>> into a List<Map<String, String>> and get Cartesian product?
[英]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的原因
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.