我测试了我的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; } }
由于没有记录任何元素,因此您有两个问题之一。您没有连接到数据库,或者您没有正确查询表。
使用命令行mysql客户端,检查您是否可以使用密码9788129325以root身份连接到本地主机(端口3306)上的“ sankar”数据库。
如果可以,请在mysql中检查您在此sankar数据库中是否有“数据”表。您实际上并不需要“ sankar.datas”。您只需要“从数据中选择*”即可。
如果可以查询该表,请确保该表具有“名称”列。
如果有名称列,请确保该列中至少有1行。
如果有一行,请确保该行的“名称”不为空。
如果是这种情况,那么您的错误可能是您未正确加载驱动程序。首先,您希望mysql-connector-java-<some version>-bin.jar应用程序的类路径中包含吗?也许在您的Web应用程序的“ lib”目录中?另外,我假设您注释掉的Class.forName在代码的其他位置?如果没有,则需要。另外,您可以这样做:
mysql-connector-java-<some version>-bin.jar
Class.forName("com.mysql.jdbc.Driver").newInstance();
对于某些Java实现,newInstance是一种“替代方法”。也许您需要的。
无论如何,再次, 您的Java服务器上 的堆栈跟踪可能会打印到控制台,并且应该使您更好地了解出了什么问题。