Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将MySQL Workbench数据库连接到NetBeans中的Java应用程序_Java_Mysql_Jdbc - Fatal编程技术网

将MySQL Workbench数据库连接到NetBeans中的Java应用程序

将MySQL Workbench数据库连接到NetBeans中的Java应用程序,java,mysql,jdbc,Java,Mysql,Jdbc,我正在尝试在NetBeans的Java应用程序中连接一个MySQL数据库,该应用程序目前只有一个用户名和密码条目。每当我在MySQL工作台中执行SQL语句时,都会收回正确的信息 我在NetBeans中将此代码作为当前代码,用于将数据库连接到我创建的登录页面: String userName = inputUsernameTextFrontPage.getText(); String password = inputPasswordTextFrontPage.getText();

我正在尝试在NetBeans的Java应用程序中连接一个MySQL数据库,该应用程序目前只有一个用户名和密码条目。每当我在MySQL工作台中执行SQL语句时,都会收回正确的信息

我在NetBeans中将此代码作为当前代码,用于将数据库连接到我创建的登录页面:

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();