JavaMySQL与JFrame连接"Cannot convert from boolean to connection"

Java MySQL and JFrame connection "Cannot convert from boolean to connection"

public class BancoDeDados {

static String url = "jdbc:mysql://localhost:3306/Estoque";
static String pass = "admin";
static String user = "admin";
static Connection conexao = null;

public static boolean conecta() throws ClassNotFoundException {

    try {
        Class.forName("mysql.Driver");
        conexao = DriverManager.getConnection(url, user, pass);
        //System.out.println("Conectado.");
        JOptionPane.showMessageDialog(null, "Conectado com Sucesso!");
        return true;
    } catch (SQLException e) {
        JOptionPane.showMessageDialog(null, "Usuário e/ou senha estão incorretos!");
        //System.out.println("Usuário e/ou senha estão errados.");
        return false;
    }

}

public class TelaPrincipal 扩展 JFrame {

Connection conexao = null;
PreparedStatement pst = null;
ResultSet rs = null;


private JPanel contentPane;
private JTextField textLogin;
private JPasswordField textSenha;





public void logar(){
    String sql = "Select *from Login WHERE Usuario = ? and senha = ?";
    try{
        pst = conexao.prepareStatement(sql);
        pst.setString(1, textLogin.getText());
        pst.setString(2, textSenha.getText());
        rs = pst.executeQuery();

        if(rs.next()){
            TelaOpcoes telaopcoes = new TelaOpcoes();
            telaopcoes.setVisible(true);
            dispose();      
        }
        else{
            JOptionPane.showMessageDialog(null, "Usuário e Senha Inválidos");
        }

    }

    catch(SQLException error){
        JOptionPane.showMessageDialog(null, error);

    }
}


/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                TelaPrincipal frame = new TelaPrincipal();
                frame.setVisible(true);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public TelaPrincipal() throws ClassNotFoundException {

    conexao = BancoDeDados.conecta();
    this.setLocationRelativeTo(null);

它在倒数第二行“CONEXAO = BANCODEDADOS.CONECTA();”上出错,说 "Type mismatch : cannot convert from boolean to Connection" 有人可以帮我吗?谢谢!

conexaoConnection 的对象,您正在将方法调用 BancoDeDados.conecta();[return boolean] 的值分配给 Connection .

像这样更改您的代码

Boolean result = BancoDeDados.conecta();

或 return conexao 来自方法 conecta 以支持您的代码。

编辑:

连接 MySQL 的驱动程序是 com.mysql.jdbc.Driver。更改您的代码

Class.forName("mysql.Driver");

Class.forName("com.mysql.jdbc.Driver");

您的方法 returns 布尔值(不是 Connection)。变化

public static boolean conecta() throws ClassNotFoundException {
    try {
        Class.forName("mysql.Driver");
        conexao = DriverManager.getConnection(url, user, pass);
        //System.out.println("Conectado.");
        JOptionPane.showMessageDialog(null, "Conectado com Sucesso!");
        return true;
    } catch (SQLException e) {
        JOptionPane.showMessageDialog(null, "Usuário e/ou senha estão incorretos!");
        //System.out.println("Usuário e/ou senha estão errados.");
        return false;
    }
}

类似于

public static Connection conecta() {
    Connection conn = null;
    try {
        Class.forName("mysql.Driver");
        conn = DriverManager.getConnection(url, user, pass);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return conn;
}

您从方法 conecta() 中 returning 布尔值,在构造函数中您将其存储到 java.sql.Connection...

因此将 conecta() 方法的 return 类型更改为 java.sql.Connection..

CONEXAO = BANCODEDADOS.CONECTA();

这里CONEXAO是连接变量

但是方法 BANCODEDADOS.CONECTA(); returns 一个布尔值。

所以改变变量CONEXAO的类型

或者创建一个新的变量布尔类型来存储结果 布尔conexao = BancoDeDados.conecta();