rekordy SQL z ArrayList i JTable

0

Witam, mój problem polega na tym, otóż mam kod, który łączy się z bazą MS SQL:

package auta_program;

import java.sql.*;
import java.util.ArrayList;

public class PolaczenieJDBC {

	public static String connectionUrl="jdbc:sqlserver://localhost;databaseName=auta;user=sa;password=12345;";
	public static ArrayList<String> lista = new ArrayList<String>();

	public static void operacjaPoleceniaSQL(String queryString) {
		try {
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			Connection conn = DriverManager.getConnection(connectionUrl);
			Statement statement = conn.createStatement();
			statement.execute(queryString);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static void operacjaZapytaniaSQL(String queryString) {
		try {
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			Connection conn = DriverManager.getConnection(connectionUrl);
			Statement statement = conn.createStatement();
			ResultSet rs = statement.executeQuery(queryString);
			while (rs.next()) {
				String s = rs.getString(1)+" | "+rs.getString(2)+" | "+rs.getString(3)+" | "+rs.getString(4)+" | "+rs.getString(5)+" | "+rs.getString(6)+" | "+rs.getString(7);
				lista.add(s);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static int ostatnieID() {
		int id = 1;
		try {
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			Connection conn = DriverManager.getConnection(connectionUrl);
			Statement statement = conn.createStatement();
			ResultSet rs = statement.executeQuery("SELECT id FROM baza_aut;");
			while (rs.next()) {
				id = Integer.parseInt(rs.getString(1));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return id;
	}
}

I mój problem polega na tym, jak go przekształcić, by wyświetlać w nim Tabele z rekordami z bazy sql, wszelka pomoc będzie doceniona :)

0

Ten:

while (rs.next()) {
                                String s = rs.getString(1)+" | "+rs.getString(2)+" | "+rs.getString(3)+" | "+rs.getString(4)+" | "+rs.getString(5)+" | "+rs.getString(6)+" | "+rs.getString(7);
                                lista.add(s);
                        }

jest wybitnie zły. znacznie lepiej jest utworzyć klasę i ustawiać w niej odpowiednie pola.

Po tej operacji mamy sobie listę zawierającą obiekty z siedmioma polami typu string (co woła o pomstę do nieba, ale to już inna sprawa). Teraz prezentować można to na kilka sposobów:

  1. nadpisać toString() - przydatne jak wyrzucasz na konsolę i nie boli formatowanie
  2. napisać odpowiedni obiekt potrafiący zaprezentować te dane.

Przykładowo:

class  MyClassPresenter{
  
    public void show(MyClass myClass){
            System.out.printf("Oto zawartość rekordu w bazie: %s, %s \n", myClass.pole1(), myClass.pole2());
    }
  
}

Na tej samej zasadzie można przygotować klasę, która będzie wyświetlać dane np. w tabeli swingowej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1