Array在浏览器中将null作为输出

时间:2013-10-28 15:14:22

标签: java mysql jsp

我测试了我的Java程序正确地从MySQL检索数据。但是,问题出在Java和JSP之间。 JSP页面无法从java程序中检索数据。

请帮帮我们。

它将输出显示为null:

null
null
.
.
.
hai

我的jsp页面:

<%@ page import="com.zoo.MySQLAccess"%>
<html>
<head>
</head>
<body>
    <%
    MySQLAccess x= new MySQLAccess();
    String[] arr =x.getRows();
    out.print("1" +arr[0]);
    %>
    <% for(String str:arr) { %>
        <div style="height: 100px">
        <% out.print(str); %>
        </div>
    <% } %>
    <h1>hai</h1>
</body>
</html>

我的java页面是:

package com.zoo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import com.mysql.jdbc.Driver;

public class MySQLAccess {

    public String[] getRows() {
        String[] a = new String[100];
        try {
            // Class.forName("com.mysql.jdbc.Driver");
            Connection connection = DriverManager
                    .getConnection("jdbc:mysql://localhost:3306/sankar?"
                            + "user=root&password=9788129325");
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement
                    .executeQuery("SELECT * FROM sankar.datas");

            int i = 0;

            while (resultSet.next()) {
                a[i] = resultSet.getString("name");
                i++;
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }

        return a;
    }
}

3 个答案:

答案 0 :(得分:1)

由于没有记录任何元素,因此您有两个问题之一。您没有连接到您的数据库,或者您没有正确查询您的表。

检查您是否可以使用命令行mysql客户端以root身份使用密码9788129325连接到localhost,端口3306上的“sankar”数据库。

如果可行,那么在mysql中检查你在这个sankar数据库中有一个“datas”表。你真的不需要“sankar.datas”。您可以“选择*来自数据”。

如果您可以查询该表,请确保它具有“名称”列。

如果它有名称列,请确保此列中至少有一行。

如果它有一行,请确保该行的“名称”不为空。

如果是这种情况,那么您的错误可能是您错误地加载了驱动程序。首先,您希望在应用程序的类路径中有mysql-connector-java-<some version>-bin.jar?也许在你的webapp的“lib”目录中?另外,我假设你注释掉的Class.forName是代码中的其他地方?如果没有,你需要那个。此外,您可以这样做:

Class.forName("com.mysql.jdbc.Driver").newInstance();

newInstance是一些Java实现的“解决方法”。也许你的需要。

无论如何,Java服务器上的堆栈跟踪 可能会打印到控制台,并且可以让您更好地了解出现了什么问题。

答案 1 :(得分:0)

可能您的resultSet为空,因此在这种情况下,您传递的数组为100 null

这就是NullPointerException来自的地方。

答案 2 :(得分:0)

您应该在返回之前调整数组大小:

return Arrays.copyOf(a, i);

你还需要将你的int i移到try / catch之外。 但是创建一个100的固定(最大)大小并不是一个好主意......