【问题标题】:My Java program isn't printing results from the query I made to MySQL我的 Java 程序没有打印我对 MySQL 的查询的结果
【发布时间】:2013-06-20 11:53:44
【问题描述】:

我制作了一个程序,为登录表单制作了一个简单的 GUI。只是为了测试目的,我这样做了,所以当您单击“登录”按钮时,Java 应该只打印出 MySQL 数据库中的查询结果。在 MySQL 中,我有一个名为“test”的数据库模式和一个名为“login”的表。登录表只有 1 行:“1, angelo, password”,列下:loginID、Username 和 Password。

MYSQL 用户名是 root。主机是 localhost 端口 3306。MySQL 服务器当前正在运行。

我在 DrJava 的“Extra Classpath”文件夹中有“mysql-connector-java-5.1.25-bin”(这是我用来编程的软件)。

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;

(GUI的代码在这里)

                Connection connection = null;

try {
    // Load the JDBC driver
    String driverName = "com.mysql.jdbc.Driver"; // MySQL MM JDBC driver
    Class.forName(driverName);

    // Create a connection to the database
    String serverName = "localhost:3306";
    String mydatabase = "test";
    String url = "jdbc:mysql://" + serverName +  "/" + mydatabase; // a JDBC url
    String username = "root";
    String password = "";
    connection = DriverManager.getConnection(url, username, password);

                    Statement st = connection.createStatement();
                ResultSet rs = st.executeQuery("select * from login");

                while(rs.next()) {
                    System.out.println( rs.getString("username"));
                }
                st.close();
                rs.close();
                connection.close(); 


} catch (ClassNotFoundException e) {
    // Could not find the database driver
} catch (SQLException e) {
    // Could not connect to the database
}

每当我运行它时都没有错误,只是没有打印出来。

编辑:当我添加 e.printStackTrace 时出现此错误:

java.lang.ClassNotFoundException
at edu.rice.cs.plt.reflect.PathClassLoader.findClass(PathClassLoader.java:148)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at swing_sample$handler.actionPerformed(swing_sample.java:108)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

根据我发布的内容,您能告诉我我做错了什么吗?谢谢。

【问题讨论】:

  • test.login有什么东西吗?
  • 你确定它没有抛出错误吗?将e.printStackTrace() 添加到cath 块
  • 我添加了 e.printStackTrace();并将 rs.getStr 更改为(“用户名”)。我确定登录表中的测试数据库模式中有一些东西。我发布了运行代码时遇到的错误。

标签: java mysql database drjava


【解决方案1】:

您似乎在以下语句中使用了行数据来打印:

 System.out.println( rs.getString("angelo"));

您需要将列名或列索引提供给rs.getString()

例如:

 System.out.println( rs.getString("user_name"));

 System.out.println( rs.getString(1));// assuming what you are lookin for is found in the first column

【讨论】:

  • 感谢您指出这一点。然而,即使在修复此问题并添加 e.printStackTrace();我现在遇到问题了。
  • @AngeloRivera 你有没有将 MySQL 驱动 jar 文件添加到类路径中?
【解决方案2】:
  1. 设置变量url后尝试打印url 它看起来像:jdbc:mysql://localhost:3306/dbName

  2. 正如 codeMan 所指出的,请使用列名而不是数据,在您的情况下将 angelo 替换为用户名。

【讨论】:

    【解决方案3】:

    问题在于加载 JDBC 驱动程序... 当我不将mysql-connector.jar 添加到我的build path 时,我的应用程序中会出现相同的error。 看来您的classpath 设置不正确.. 您是否将mysql-connector.jar 添加到build path

    【讨论】:

    • 我的文件夹中有“mysql-connector-java-5.1.25-bin.jar”,用于 DrJava 中的“Extra Classpath”。我还有其他事情要做吗? (比如在代码或其他地方编辑构建路径?)
    • 当我添加 mysql-connector.jar 时,你的代码对我有用......你确定你的 mysql-connector-java-5.1.25-bin 是 jar 文件而不是 zip 文件......如果它是 zip 文件,然后首先将其解压缩并将 jar 文件的位置提供给您的 Extra Classpath
    【解决方案4】:

    您的代码看起来是正确的,我认为您的代码会尝试加载一些不在您的类中的类,请确保所有依赖类都应该在您的类路径中。

    clean code and build your project .
    

    它可能会解决你的问题解决你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 2016-04-07
      • 1970-01-01
      相关资源
      最近更新 更多