Я пытаюсь подключиться к базе данных PostgreSQL с помощью Java и пытаюсь отобразить результат выполнения запроса с помощью Swing JTable. Я использую JDBC для подключения к моей базе данных PostgreSQL. Вот кодВерсия PostgreSQL - 4.11.
package com.company;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.util.Vector;
public class SQLProject {
private JTextField textFieldQuery;
private JButton buttonGo;
private JTable tableQueries;
private JPanel panelMain;
public SQLProject() {
buttonGo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
ResultSet resultSet = getData();
TableModel tableModel = buildTableModel(resultSet);
tableQueries.setModel(tableModel);
} catch(SQLException e1) {
e1.printStackTrace();
}
}
});
}
public static void main(String[] args) {
JFrame frame = new JFrame("SQLProject");
frame.setContentPane(new SQLProject().panelMain);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
private ResultSet getData() throws SQLException {
try{ // driver loading
Class.forName("org.postgresql.Driver");
}
catch(Exception e){
e.printStackTrace ();
}
final String url = "jdbc:postgresql://127.0.0.1:57956/browser/";
try {
// problem is here
final Connection connection = DriverManager.getConnection(url, "postgres", "stalker");
final String sql = textFieldQuery.getText();
final PreparedStatement preparedStatement = connection.prepareStatement(sql);
try { connection.close( ); }
catch(SQLException e) {e.printStackTrace();}
return preparedStatement.executeQuery();
}
catch(SQLException e) {
throw new SQLException();
}
}
public static TableModel buildTableModel(final ResultSet resultSet)
throws SQLException {
int columnCount = resultSet.getMetaData().getColumnCount();
// Column names.
Vector<String> columnNames = new Vector<>();
for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
columnNames.add(resultSet.getMetaData().getColumnName(columnIndex));
}
// Data of the table.
Vector<Vector<Object>> dataVector = new Vector<>();
while (resultSet.next()) {
Vector<Object> rowVector = new Vector<>();
for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
rowVector.add(resultSet.getObject(columnIndex));
}
dataVector.add(rowVector);
}
return new DefaultTableModel(dataVector, columnNames);
}
}
Возможно, проблема в этой строке кода.
final Connection connection = DriverManager.getConnection(url, "postgres", "stalker");
Имя пользователя и пароль верны, но я не уверен насчетURL.