Ошибка при подключении моей страницы входа с кодом JDBC

1
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conn{
    Connection connection = null;
    String  driverName ="oracle.jdbc.driver.OracleDriver"; // for Oracle
    // String driverName = "com.mysql.jdbc.Driver"; //for MySql
    String serverName = "localhost"; // Use this server.
    String portNumber = "1521";
    String sid = "orcl";
    String url="jdbc:oracle:thin:@"+serverName+":"+ portNumber+":"+sid; // for Oracle
    //uri ="jdbc:mysql://server ip or address:port/database name"; //for Mysql
    String username = "scott"; // You should modify this.
    String password = "tiger"; // You should modify this.

    public Conn() {}
    public boolean dbConnector(){
        try {
            // Load the JDBC driver
             Class.forName(driverName);
            // Create a connection to the database
            connection = DriverManager.getConnection(url, username, password);
        } catch (ClassNotFoundException e) {
            // Could not find the database driver
            System.out.println("ClassNotFoundException : "+e.getMessage());
            return false;
        } catch (SQLException e) {
            // Could not connect to the database
            System.out.println(e.getMessage());
            return false;
        }
        return true;
    }

    public static void main(String[] args){
        Conn con =new Conn();
       System.out.println("Connection : " +con.dbConnector());
    }     
}

Это мой код для подключения к моей базе данных оракула 11g и он успешный. Код ниже для моей страницы входа и дает мне ошибку: тип несоответствия не может быть изменен с boolean на Connection

import java.awt.EventQueue;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.*;
import javax.swing.JOptionPane;

public class Login {
    private JFrame frame;
    private JTextField textField;
    private JPasswordField passwordField;
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Login window = new Login();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    Connection connection=null;
    /**
     * Create the application.
     */
    public Login() {
        initialize();
        connection=Conn.dbConnector();  **{This is where i get the error}**
    }

У меня также есть все файлы jar, необходимые для проекта.

  • 0
    а сообщение об ошибке есть? (не возражаете против удаления внешних элементов из вашего кода?)
  • 1
    Что вы ожидаете, метод объявлен как "public boolean dbConnector ()" ...
Показать ещё 1 комментарий
Теги:
jdbc
swing

3 ответа

2
Лучший ответ

Ваши ожидания не соответствуют реальности, метод, который вы вызываете, объявляется как возвращающий boolean

public boolean dbConnector(){

И всегда кажется, что возвращается false

Чтобы он соответствовал вашим ожиданиям, вам нужно переписать, чтобы больше походить...

public Connection dbConnector(){

    try {
        // Load the JDBC driver
        Class.forName(driverName);
        // Create a connection to the database
        connection = DriverManager.getConnection(url, username, password);
    } catch (ClassNotFoundException e) {
        // Could not find the database driver
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return connection;
}

Теперь, лично, у меня был бы метод throw, по крайней мере, SQLException если бы не ClassNotFoundException а... но вы могли бы проверить это в конструкторе вместо этого... Это не ответственность за этот метод для устранения исключений, он должен передать ответственность за цепочку вызовов

2

В Conn class return Connection вместо Boolean

public Connection dbConnector() {
    try {
        // Load the JDBC driver
        Class.forName(driverName);
        // Create a connection to the database
        connection = DriverManager.getConnection(url, username, password);
    } catch (ClassNotFoundException e) {
        // Could not find the database driver
        System.out.println("ClassNotFoundException : " + e.getMessage());
    } catch (SQLException e) {
        // Could not connect to the database
        System.out.println(e.getMessage());
    }
    return connection;
}
  • 0
    Это выглядит лучше ...
  • 0
    ОШИБКА: неправильное использование. OracleSql (-transition <файл> | <process_escapes> <convert_nchars> {<sql>})
Показать ещё 3 комментария
0

Ваш метод dbConnector() возвращает boolean not Connection, он должен возвращать объект Connection. А также вы пытаетесь вызвать dbConnector() не статический метод по имени класса

Ещё вопросы

Сообщество Overcoder
Наверх
Меню