一尘不染

数组在浏览器中提供null作为输出

jsp

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

请帮助我。

它给出的输出为空:

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;
    }
}

阅读 321

收藏
2020-06-10

共1个答案

一尘不染

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

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

如果可以,请在mysql中检查您在此sankar数据库中是否有“数据”表。您实际上并不需要“ sankar.datas”。您只需要“从数据中选择*”即可。

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

如果有名称列,请确保该列中至少有1行。

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

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

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

对于某些Java实现,newInstance是一种“替代方法”。也许您需要的。

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

2020-06-10