您好,今天我需要帮助将结果集中的数据获取到我的列表。它与我的 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/