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, необходимые для проекта.
Ваши ожидания не соответствуют реальности, метод, который вы вызываете, объявляется как возвращающий 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
а... но вы могли бы проверить это в конструкторе вместо этого... Это не ответственность за этот метод для устранения исключений, он должен передать ответственность за цепочку вызовов
В 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;
}
Ваш метод dbConnector() возвращает boolean not Connection, он должен возвращать объект Connection. А также вы пытаетесь вызвать dbConnector() не статический метод по имени класса