【问题标题】:Java MySQL and JFrame connection "Cannot convert from boolean to connection"Java MySQL 和 JFrame 连接“无法从布尔值转换为连接”
【发布时间】:2015-09-04 23:03:56
【问题描述】:

公共类 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;
    }

}

公共类 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();”上出错,说“类型不匹配:无法从布尔值转换为连接” 有人可以帮我吗?谢谢!

【问题讨论】:

    标签: java android mysql swing import


    【解决方案1】:

    CONEXAO = BANCODEDADOS.CONECTA();

    这里CONEXAO是一个连接变量

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

    所以改变变量CONEXAO的类型

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

    【讨论】:

    • 我做到了,错误消失了,但是当我运行时,控制台上出现了它:java.lang.ClassNotFoundException: mysql.Driver
    • 您必须创建与数据库示例的连接 String JDBC_DRIVER = "com.mysql.jdbc.Driver"; String DB_URL = "jdbc:mysql://localhost:3306/test";字符串用户=“根”;字符串 PASS = "12345678"; try { //STEP 2: 注册 JDBC 驱动 Class.forName("com.mysql.jdbc.Driver"); //STEP 3: 打开连接 System.out.println("正在连接数据库..."); conn = DriverManager.getConnection(DB_URL, USER,PASS); } 捕捉(异常 e){}
    【解决方案2】:

    您的方法返回一个布尔值(不是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;
    }
    

    【讨论】:

      【解决方案3】:

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

      所以将conecta()方法的返回类型改为java.sql.Connection..

      【讨论】:

        【解决方案4】:

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

        修改你的代码

        Boolean result = BancoDeDados.conecta();
        

        或从方法 conecta 返回 conexao 以支持您的代码。

        编辑:

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

        Class.forName("mysql.Driver");
        

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

        【讨论】:

        • 我做到了,错误消失了,但是当我运行时,控制台上出现了它:java.lang.ClassNotFoundException: mysql.Driver
        猜你喜欢
        • 2018-10-13
        • 1970-01-01
        • 2018-12-25
        • 2020-09-27
        • 1970-01-01
        相关资源
        最近更新 更多