我制作了一个程序,为登录表单创建一个简单的GUI。出于测试目的,我点击了“登录”按钮,Java应该只打印出来自MySQL数据库的查询结果。在MySQL中,我有一个名为“test”的数据库模式和一个名为“login”的表。登录表只有1行:“1,angelo,password”列下的列:loginID,用户名和密码。
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)
根据我发布的内容你能告诉我我做错了什么吗?感谢。
答案 0 :(得分: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
答案 1 :(得分:0)
设置变量url后尝试打印url 它看起来像:jdbc:mysql:// localhost:3306 / dbName
正如codeMan所指出的,请使用列名而不是数据,在您的情况下将angelo替换为用户名。
答案 2 :(得分:0)
问题在于加载JDBC驱动程序......
当我未将error
添加到mysql-connector.jar
时,我的应用中会出现相同的build path
。
您的classpath
似乎设置不正确..您是否已将mysql-connector.jar
添加到build path
?
答案 3 :(得分:0)
你的代码看起来是正确的,我的代码试图加载一些不在你的类中的类,确保所有依赖类都应该在你的类路径中。
clean code and build your project .
它可以解决您的问题,解决您的问题。