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"
有人可以帮我吗?谢谢!
conexao
是 Connection
的对象,您正在将方法调用 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();
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" 有人可以帮我吗?谢谢!
conexao
是 Connection
的对象,您正在将方法调用 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();