将MySQL Workbench数据库连接到NetBeans中的Java应用程序
我正在尝试在NetBeans的Java应用程序中连接一个MySQL数据库,该应用程序目前只有一个用户名和密码条目。每当我在MySQL工作台中执行SQL语句时,都会收回正确的信息 我在NetBeans中将此代码作为当前代码,用于将数据库连接到我创建的登录页面:将MySQL Workbench数据库连接到NetBeans中的Java应用程序,java,mysql,jdbc,Java,Mysql,Jdbc,我正在尝试在NetBeans的Java应用程序中连接一个MySQL数据库,该应用程序目前只有一个用户名和密码条目。每当我在MySQL工作台中执行SQL语句时,都会收回正确的信息 我在NetBeans中将此代码作为当前代码,用于将数据库连接到我创建的登录页面: String userName = inputUsernameTextFrontPage.getText(); String password = inputPasswordTextFrontPage.getText();
String userName = inputUsernameTextFrontPage.getText();
String password = inputPasswordTextFrontPage.getText();
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root","Password23");
String sql = "SELECT username,password FROM adminlogin WHERE username =? AND password =? AND ID =?";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setString(1, userName);
preparedStatement.setString(2, password);
preparedStatement.setLong (3, 1);
ResultSet result = preparedStatement.executeQuery();
if(result.next()){
setVisible(false);
new adminLogin().setVisible(true);
}
else{
JOptionPane.showMessageDialog(null, "Incorrect Login Details");
}
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e.getStackTrace());
}
对不起,我是新来的,在NetBeans中成功连接数据库时,有人能看到这方面的任何问题吗。每次我运行程序时,它都会直接跳到catch部分并返回“connectionerror”
任何帮助都将不胜感激。如果您需要任何进一步的信息,请告诉我,因为我不确定这对其他人是否有意义
在e.getStackTrace()中添加时收到的错误消息是
正如其他人已经指出的,您的代码中存在几个问题。 首先检查sql连接器版本(如果是版本5),然后避免在
classForName()
中使用.cj前缀。将其更改为Class.forName(“com.mysql.jdbc.Driver”)代码>
然后请使用PreparedStatements而不是createStatements来传递具有可变参数的查询
附加:在Java中命名变量时请使用camel大小写。例如:username必须是username
使用PreparedStatement而不是createStatement后的样本溶液
String username = inputUsernameTextFrontPage.getText();
String password = inputPasswordTextFrontPage.getText();
你能显示错误日志吗?在catch块中添加日志语句(例如e.printStackTrace())我可以看到这里有两个问题:首先,您没有在行尾留下空格,因此发送到数据库的查询是SELECT username,passwordFROM test.adminloginWHERE…
。发现问题了吗?其次,请使用准备好的语句:不要只是将值连接到SQL字符串中。请修复Luke指出的错误,如果问题仍然存在,请更新代码并发布该异常的完整异常堆栈跟踪。@MarkRotterVeel嗨,我在这篇文章中更新了我的代码,我现在不确定哪里有任何错误请包括异常stacktrace(使用日志记录或e.printStackTrace()
)。或者至少更改消息对话框以显示连接错误:“+e
”,这样您就知道实际问题所在。您好,谢谢您的帮助。当我运行程序并输入管理员用户名和密码时,仍然会出现错误,它会直接跳转到代码的catch部分,并显示代码中的“Connection error”行。我已经在您的建议中添加了使用prepared语句而不是create语句。@ashleigh14您是否检查了mysql连接器的版本?是的,正如您所说,它是版本5,所以我按照您的建议删除了.cj部分。我已经在这篇文章中更新了我的代码。@ashleigh14请像下面那样更改代码,然后在控制台日志中重新发布您遇到的错误。代码:catch(异常e){System.out.println(e.getStackTrace());//将这一行添加到上面的catch块}
请在更新帖子后通过注释通知我。我已使用在getStackTrace()中键入时收到的错误消息的图像更新了帖子
String sql = "SELECT username,password FROM adminlogin WHERE username =? AND password =? AND ID =?";
PreparedStatement preparedStatement =
connection.prepareStatement(sql);
preparedStatement.setString(1, username);
preparedStatement.setString(2, password);
preparedStatement.setLong (3, 1);
ResultSet result = preparedStatement.executeQuery();