簡體   English   中英

將 MySQL Workbench 數據庫連接到 NetBeans 中的 Java 應用程序

[英]Connecting MySQL Workbench database to a Java application in NetBeans

我正在嘗試在 NetBeans 的 Java 應用程序中連接 MySQL 數據庫,該數據庫目前只有 1 個用戶名和密碼條目。 每當我在 MySQL Workbench 中執行 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 中成功連接時,任何人都可以看到任何問題。 每次我運行程序時,它都會直接跳轉到捕獲部分並帶回“連接錯誤”。

任何幫助將非常感激。 如果您需要任何進一步的信息,請告訴我,因為我不確定這對其他人是否有意義。

添加 e.getStackTrace() 時收到的錯誤消息是使用 e.getStackTrace() 時的錯誤消息

正如其他人已經指出的那樣,您的代碼中有幾個問題。 首先檢查您的 sql 連接器版本,如果它是版本 5,然后避免classForName()使用.cj前綴。將其classForName()Class.forName("com.mysql.jdbc.Driver");

然后請使用 PreparedStatements 而不是 createStatements 來處理具有可變參數的查詢。

附加:在Java中命名變量時請使用駝峰式大小寫。例如:用戶名必須是用戶名

使用 PreparedStatement 而不是 createStatement 后的示例解決方案

String username = inputUsernameTextFrontPage.getText();
String password = inputPasswordTextFrontPage.getText();
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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM