在表codenameone中显示数据库中的数据

时间:2015-10-01 21:24:10

标签: codenameone

我想将从MySQL数据库中检索到的信息显示在表格中。我可以在我的控制台中看到JSON结果,但我需要在我的应用程序中显示它。这是我的代码的一部分:

byte[] data = cr.getResponseData();

Map response = (Stock.ParseJsonObject(data));

Stock.killNetworkAccess();
java.util.List statementResult = (java.util.List) response.get("StatementResult");
System.out.println("Statement Result:" + statementResult);

for (Object saveResult1 : statementResult) {
    Map tempHash = (Map) saveResult1;
    System.out.println(tempHash);
    String result = tempHash.get("Status").toString();
    String sellerName = tempHash.get("SellerName").toString();
    String stockName = tempHash.get("StockName").toString();
    if (result.equalsIgnoreCase("ok")) {
    // System.out.print("Success");
    System.out.println(stockName); //this works: I can see the list of stock names from my database

    String[] columnNames = { "Seller's Name", "Stock Name", "Unit", "Price" };
    Object[] dat = { sellerName, stockName };

    Table tb = new Table(new DefaultTableModel(columnNames, (Object[][]) dat, false));
    allrec.addComponent(tb);
}

}

控制台显示此信息 - >>>>>>

Statement Result:[{ID=1, SellerName=, StockName=Seven UP, Unit=23, Price=1, TimeCreated=0000-00-00 00:00:00, Status=Ok}, {ID=2, SellerName=, StockName=Seven UP, Unit=23, Price=1, TimeCreated=0000-00-00 00:00:00, Status=Ok}, {ID=3, SellerName=, StockName=Wallmart, Unit=76, Price=34, TimeCreated=0000-00-00 00:00:00, Status=Ok}, {ID=5, SellerName=, StockName=Africa Insurance, Unit=3, Price=23, TimeCreated=0000-00-00 00:00:00, Status=Ok}
{ID=1, SellerName=, StockName=Seven UP, Unit=23, Price=1, TimeCreated=0000-00-00 00:00:00, Status=Ok}
Seven UP

这表明正在从数据库中检索数据。但是,当我尝试在表中获取它时,我会收到一个错误对话框,其中显示:

Error: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to Ljava.lang.Object]

我确定我的错误在这里: - >>>>

String[] columnNames = { "Seller's Name", "Stock Name", "Unit", "Price" };
Object[] dat = { sellerName, stockName };
Table tb = new Table(new DefaultTableModel(columnNames, (Object[][]) dat, false));

我在另一个名为Stock的类中有这些:

public static Map ParseJsonObject(byte[] data) {
    try {
        JSONParser parser = new JSONParser();
        Map response = parser.parseJSON(new InputStreamReader(new ByteArrayInputStream(data), "UTF-8"));
        return response;
    } catch (IOException ioe) {
    }
    return null;
}

public static void killNetworkAccess() {
    NetworkManager.getInstance().shutdown();
}

有人可以帮帮我吗?谢谢。

1 个答案:

答案 0 :(得分:0)

转换它:

Object[] dat = { sellerName, stockName };

Table tb = new Table(new DefaultTableModel(columnNames, (Object[][]) dat, false));

对此:

Object[][] dat = { 
       {sellerName, stockName}
};
Table tb = new Table(new DefaultTableModel(columnNames, dat, false));

注意Object的额外括号表示2D数组,另外两个花括号表示另一个花键数组。

如果您将行视为一个数组(元素集),那么表实际上是一个数组数组(其中每个数组代表一行)。

在Java中,Casting是严格的,因此您需要创建正确类型的对象,这样才能开始使用,因为它可以帮助您避免遇到麻烦。