Seguinte, dei uma estudada aqui e consegui compreender de uma forma diferente implementação de DAO e entendi um pouco melhor o MVC.
No caso eu estou criando um programinha para documentação de mp3, isso é pra utilidade minha mesmo, aproveitando que eu vejo que é simples fazer e eu to precisando do programa.
Então eu criei as seguintes classes.
Classe Music
package model;
public class Music {
private long id = 0;
private String artist;
private String music;
private String directory;
private String media;
private String genre;
private String date;
public String getArtist() {
return artist;
}
public void setArtist(String artist) {
this.artist = artist;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getDirectory() {
return directory;
}
public void setDirectory(String directory) {
this.directory = directory;
}
public String getGenre() {
return genre;
}
public void setGenre(String genre) {
this.genre = genre;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getMedia() {
return media;
}
public void setMedia(String media) {
this.media = media;
}
public String getMusic() {
return music;
}
public void setMusic(String music) {
this.music = music;
}
}
Classe ConFactory
package model.DAO.banco;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConFactory {
public static final int POSTGRES = 0;
public static final String PSQLDRIVER = "org.postgresql.Driver";
private static int banco;
public static Connection conexao(String url, String nome, String senha, String PSQLDRIVER) throws ClassNotFoundException, SQLException {
switch (banco) {
case POSTGRES:
Class.forName(PSQLDRIVER);
break;
}
return DriverManager.getConnection(url, nome, senha);
}
}
Classe DAOMusic
package model.DAO;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.JOptionPane;
import model.DAO.banco.ConFactory;
import model.Music;
public class DAOMusic {
private final String url = "jdbc:postgresql://localhost/proc";
private final String nome = "proc";
private final String senha = "proc";
private Connection con;
private Statement stmt;
private void printError(String msg, String msgErro) {
JOptionPane.showMessageDialog(null, msg, "Erro crítico", 0);
System.err.println(msg);
System.out.println(msgErro);
System.exit(0);
}
private void connect() throws SQLException {
try {
con = ConFactory.conexao(url, nome, senha, ConFactory.PSQLDRIVER);
stmt = con.createStatement();
System.out.println("Conectado!");
} catch (ClassNotFoundException e) {
printError("Erro ao carregar o driver", e.getMessage());
} catch (SQLException e) {
printError("Erro ao conectar", e.getMessage());
}
}
private void close() {
try {
stmt.close();
con.close();
System.out.println("Conexão Fechada");
} catch (SQLException e) {
printError("Erro ao fechar conexão", e.getMessage());
}
}
public void delete(String id) throws SQLException {
connect();
try {
stmt.executeUpdate("DELETE FROM musicorg WHERE id = '" + id
+ "';");
} catch (SQLException e) {
printError("Erro ao apagar pessoas", e.getMessage());
} finally {
close();
}
}
public Vector<Music> searchAll() throws SQLException {
connect();
Vector<Music> resultados = new Vector<Music>();
ResultSet rs;
try {
rs = stmt.executeQuery("SELECT * FROM musicorg");
while (rs.next()) {
Music temp = new Music();
// pega todos os atributos de Music
temp.setId(rs.getLong("id"));
temp.setArtist(rs.getString("artist"));
temp.setMusic(rs.getString("music"));
temp.setMedia(rs.getString("media"));
temp.setGenre(rs.getString("genre"));
temp.setDirectory(rs.getString("directory"));
temp.setDirectory(rs.getString("date"));
resultados.add(temp);
}
return resultados;
} catch (SQLException e) {
printError("Erro ao buscar pessoas", e.getMessage());
return null;
}
}
public void atualizar(Music music) throws SQLException {
connect();
String com = "UPDATE musicorg SET music = '" + music.getMusic()
+ "', artist =" + music.getArtist() + ", genre = '"
+ music.getGenre() + "', directory ='" + music.getDirectory()
+ "', date ='" + music.getDate() + "', media ='" + music.getMedia()
+ "' WHERE id = '" + music.getId() + "';";
System.out.println("Atualizada!");
try {
stmt.executeUpdate(com);
} catch (SQLException e) {
e.printStackTrace();
} finally {
close();
}
}
public Vector<Music> search(Long id) throws SQLException {
connect();
Vector<Music> resultados = new Vector<Music>();
ResultSet rs;
try {
rs = stmt.executeQuery("SELECT * FROM musicorg WHERE id LIKE '"
+ id + "%';");
while (rs.next()) {
Music temp = new Music();
// pega todos os atributos de Music
temp.setId(rs.getLong("id"));
temp.setArtist(rs.getString("artist"));
temp.setMusic(rs.getString("music"));
temp.setMedia(rs.getString("media"));
temp.setGenre(rs.getString("genre"));
temp.setDirectory(rs.getString("directory"));
temp.setDirectory(rs.getString("date"));
resultados.add(temp);
}
return resultados;
} catch (SQLException e) {
printError("Erro ao buscar pessoas", e.getMessage());
return null;
}
}
public void Add(Music music) throws SQLException {
connect();
try {
stmt.executeUpdate("INSERT INTO musicorg VALUES('"
+ music.getId() + "', '"
+ music.getArtist() + "', '"
+ music.getGenre() + "', '"
+ music.getDirectory() + "', '"
+ music.getMedia() + "', '"
+ music.getDate() + "', '"
+ music.getMusic() + "', '" );
System.out.println("Inserida!");
} catch (SQLException e) {
printError("Erro ao inserir Pessoa", e.getMessage());
} finally {
close();
}
}
}
Beleza, além disso eu criei uma tabela ‘musicorg’ que tem as seguinte colunas, ‘id, artist, music, directory, genre, date, media’.
Agora eu vou começar a criar em SWING essa tabela, alguém tem algum link bom pra explicar sobre SWING e tabelas do tipo excel?
Outra dúvida sobre o MVC, o que seria o Control nesse tipo de aplicação?
Grato novamente.
Abraço.