Pessoal, tenho uma pequena aplicação Java com 5 campos texto e 3 botões: CONSULTAR, INSERIR E EXCLUIR.
Esta aplicação “conversa” com uma pequena tabela de 5 colunas criada no Access. Nome da tabela: Table1 e Nome das colunas: Cod_cli , Nome, Tel, End e Pruduto.
Criei uma simples query, onde através do código do cliente ele retorna o nome. Veja abaixo.
public String ConsultarNome(int cod)
{
query = “select Table1.Nome from Table1 where Cod_cli=”+cod;
return query;
}
Gostaria de saber qual sintaxe SQL devo criar, para que através do Codigo do cliente, ele me retorne os respectivos e correspondentes: Nome, Tel, End e Produto.
Obrigado!!
Cesar Americo
edmarr
Setembro 3, 2009, 2:34pm
#2
Fiquei confuso tem como explicar melhor ?
Jovem, se sua dúvida for apenas a instrução SQL lá vai:
PreparedStatement stmt = null;
ResultSet rs = null;
StringBuffer sql = new StringBuffer("");
sql.append("SELECT cod_cli, nome, tel, end, produto ");
sql.append("FROM table1 ");
sql.append("WHERE cod_cli = " + variavelID);
try {
stmt = ConnectionPool.getConnection().prepareStatement(sql.toString());
rs = stmt.executeQuery();
while (rs.next()) {
int i = 1;
SEUTIPO dto = new SEUTIPO ();
dto.setCodCliente(rs.getInt(i++));
dto.setNome(rs.getString(i++));
dto.setTel(rs.getString(i++));
dto.setEnd(rs.getString(i++));
dto.setProduto(rs.getString(i++));
}
} catch (SQLException e) {
throw new DAOException(e.getMessage());
} finally {
ConnectionPool.closeAll(null, stmt, rs);
rs = null;
stmt = null;
sql = null;
}
edmarr
Setembro 3, 2009, 2:36pm
#4
Creio que n seja somente a instrução Sql n .
Voce quer a implementação inteira???
Desde de o resultset etc etc??
não conheço a sintaxe do acces mas em sql seria:
SELECT nome, tel, end, Produto FROM table1 WHERE cod_cli = ?
usei um bind ali, de uma olhada em PreparedStatement do java, esse ponto de interrogação seria um parametro ai depois vc setaria esse parametro
algo como:
pstm.setInt(1, codAplic);
pstm seria um objeto do tipo PreapredStatement e codAplic a sua varoável ID.
Ok, meu método ficou assim:
public String ConsultarNome(int cod)
{
StringBuffer sql = new StringBuffer("");
sql.append("SELECT cod_cli, nome, tel, end, produto ");
sql.append("FROM table1 ");
sql.append("WHERE cod_cli = " +cod);
//query = “select Table1.Nome from Table1 where Cod_cli=”+cod;
//return query;
}
Sou iniciante ainda, o que eu retorno? Como fazer a Strin query entender o que definiu o sql.append ?
abraços
}
O ResultSet já tenho implementado, na classe principal.
Valeu!!
O código ficou assim, o compilador não ta reconhecendo o que vou destacar em negrito:
if(evento.getSource() == Bconsulta)
{
try{
StringBuffer sql = new StringBuffer("");
sql.append("SELECT cod_cli, nome, tel, end, produto ");
sql.append("FROM table1 ");
sql.append("WHERE cod_cli = " + Integer.parseInt(Tcod.getText()));
try{
stm = conn.getConn().prepareStatement(sql.toString());
rs = stm.executeQuery();
while (rs.next()) {
int i = 1;
Tcod.setText(""+rs.getInt(i++));
Tnome.setText(rs.getString(i++));
Ttel.setText(rs.getString(i++));
Tend.setText(rs.getString(i++));
Tprod.setText(rs.getString(i++));
}
}catch (SQLException e) {
throw new [b]DAOException[/b](e.getMessage());
} finally {
conn.[b]closeAll[/b](null, stm, rs);
rs = null;
stm = null;
sql = null;
}
}catch(SQLException e){}
}
Será que falta eu importar algum pacote??
edmarr
Setembro 3, 2009, 3:38pm
#10
throw new DAOException(e.getMessage());
Esta linda ele criou uma propia exceção , Extendendo a propia classe Exeption ou suas sub-Classes .
conn.closeAll(null, stm, rs)[code]
Provavelmente ele sobrescreveu o metodo para fechar todos de uma so vez ,
no casso vc poderia fechar um a um .
Eu simplismente comentei tdo isso e deu certo:
/*throw new DAOException(e.getMessage());
} finally {
conn.closeAll(null, stm, rs);
rs = null;
stm = null;
sql = null; */
Acredito que isso poderá me levar a futuros erros no aplicativo…
Obrigado a todos!!
edmarr
Setembro 3, 2009, 4:07pm
#12
basta colocar
catch(SQLException e) {
e.getMessage();
}catch(Exeption e){
e.getMessage();
}finally {
rs = null;
stm = null;
sql = null;
}
Entendi … Agora deu certo!!
Obrigado
Cesar Americo
edmarr
Setembro 3, 2009, 5:19pm
#14
Não Esqueça de editar o Título adicionando a tag [RESOLVIDO] no final do Título , Depois tirar suas duvidas.