Boa tarde pessoal,
estou desenvolvendo uma aplicação em java, utilizando ServLet + JSP… E vi que em PHP(ruimd+) tem uma funçãozinha que é mysql_fetch_assoc, teria algo parecido em JAVA…
Muito obrigado.
Boa tarde pessoal,
estou desenvolvendo uma aplicação em java, utilizando ServLet + JSP… E vi que em PHP(ruimd+) tem uma funçãozinha que é mysql_fetch_assoc, teria algo parecido em JAVA…
Muito obrigado.
Em java puro, usando JDBC, quando você faz uma consulta ao banco é retornado um objeto ResultSet. Ele possui métodos que você pega os valores das colunas do banco pelo nome, assim como a função mysql_fetch_assoc do PHP.
A diferença é que em Java vc deve dizer o tipo de dado que espera. Digamos que você tem duas colunas, uma do tipo INT e outra VARCHAR, para recuperá-las ficaria:
resultSet.getInt("nomeDoCampoInt");
resultSet.getString("nomeDoCampoVarchar");
Sugiro estudar JDBC. Existem muitos tutoriais por aí…
[quote=bob_sponja]Em java puro, usando JDBC, quando você faz uma consulta ao banco é retornado um objeto ResultSet. Ele possui métodos que você pega os valores das colunas do banco pelo nome, assim como a função mysql_fetch_assoc do PHP.
A diferença é que em Java vc deve dizer o tipo de dado que espera. Digamos que você tem duas colunas, uma do tipo INT e outra VARCHAR, para recuperá-las ficaria:
resultSet.getInt("nomeDoCampoInt");
resultSet.getString("nomeDoCampoVarchar");
Sugiro estudar JDBC. Existem muitos tutoriais por aí…[/quote]
O meu projeto todo está em JDBC… tenho umas 40 tabelas… a minha dúvida é a seguinte:
Eu tenho um outro projeto aqui em PHP e um programdor da vida utilizou esta função na hora de uma consulta…
[code]Criando Tabela.
CREATE TABLE IF NOT EXISTS biblioteca (
Codigo int(3) NOT NULL AUTO_INCREMENT,
Nome varchar(100) NOT NULL,
CodPai int(3) DEFAULT NULL,
PRIMARY KEY (Codigo),
KEY FKBiblioteca1 (CodPai)
);
biblioteca
INSERT INTO biblioteca
(Codigo
, Nome
, CodPai
) VALUES
(6, ‘Cartilhas’, NULL),
(7, ‘Procedimentos Operacionais e Administrativos’, NULL),
(8, ‘Videos’, NULL),
(9, ‘Rio 2016 - Imagens’, NULL),
(10, ‘CONSETI’, NULL),
(11, ‘Formulários’, NULL),
(12, ‘Manuais de Equipamentos’, NULL),
(13, ‘ASSINF’, 7),
(14, ‘Contabilidade’, 7),
(15, ‘DAAD’, 7),
(16, ‘DAF’, 7),
(17, ‘DGAF’, 7),
(18, ‘DIVDOC’, 7),
(19, ‘DIVORÇ’, 7),
(20, ‘DIVPAT’, 7),
(21, ‘DRH’, 7),
(22, ‘SubGestão’, 7),
(23, ‘SUPEM’, 7),
(24, ‘Publicações Oficiais’, NULL),
(25, ‘RH’, NULL),
(26, ‘Viva Melhor’, NULL);
[/code]
O problema é que eu não estou conseguindo trazer os dados associados… exemplo:
Dessa forma mais ou menos…:
Cartilhas
CONSETI
Formulários
Manuais de Equipamentos
Procedimentos Operacionais e Administrativos
ASSINF
Contabilidade
DAAD
DAF
DGAF
DIVDOC
DIVORÇ
DIVPAT
DRH
SubGestão
SUPEM
Publicações Oficiais
RH
Rio 2016 - Imagens
Videos
Viva Melhor
Entendeu ?
Esta é a minha complicação, Muito obrigado.
Utilizando jdbc, precisará montar a query com join para trazer os dados das tabelas associadas (se quiser fazer direito).
Dependendo de como você quer e que tipo de consulta precisará, poderá optar entre:
JOIN
INNER JOIN
RIGHT JOIN
LEFT JOIN
OUTER JOIN
LEFT OUTER JOIN
LEFT RIGHT JOIN
etc…
Algo mais ou menos assim
select b.codigo, b.nome, b.codpai, p.codigo, p.col1, p.colN
FROM
biblioteca b
INNER JOIN
pai p
ON
b.codpai = p.codigo
WHERE
b.codigo = ?
Onde ? é o argumento de pesquisa
[quote=drsmachado]Utilizando jdbc, precisará montar a query com join para trazer os dados das tabelas associadas (se quiser fazer direito).
Dependendo de como você quer e que tipo de consulta precisará, poderá optar entre:
JOIN
INNER JOIN
RIGHT JOIN
LEFT JOIN
OUTER JOIN
LEFT OUTER JOIN
LEFT RIGHT JOIN
etc…
Algo mais ou menos assim
select b.codigo, b.nome, b.codpai, p.codigo, p.col1, p.colN
FROM
biblioteca b
INNER JOIN
pai p
ON
b.codpai = p.codigo
WHERE
b.codigo = ?
Onde ? é o argumento de pesquisa[/quote]
Seria uma chave composta… é uma única tabela… entendeu ?
Quero que fique relacionado desta forma:
Cartilhas
CONSETI
Formulários
Manuais de Equipamentos
Procedimentos Operacionais e Administrativos
ASSINF
Contabilidade
DAAD
DAF
DGAF
DIVDOC
DIVORÇ
DIVPAT
DRH
SubGestão
SUPEM
Publicações Oficiais
RH
Rio 2016 - Imagens
Videos
Viva Melhor
Não.
Não ficou claro.
[quote=drsmachado]Não.
Não ficou claro.[/quote]
A minha banco está assim, inserindo… a tabela… :
Criando Tabela.
CREATE TABLE IF NOT EXISTS biblioteca (
Codigo int(3) NOT NULL AUTO_INCREMENT,
Nome varchar(100) NOT NULL,
CodPai int(3) DEFAULT NULL,
PRIMARY KEY (Codigo),
KEY FKBiblioteca1 (CodPai)
);
--
-- Extraindo dados da tabela `biblioteca`
--
INSERT INTO `biblioteca` (`Codigo`, `Nome`, `CodPai`) VALUES
(6, 'Cartilhas', NULL),
(7, 'Procedimentos Operacionais e Administrativos', NULL),
(8, 'Videos', NULL),
(9, 'Rio 2016 - Imagens', NULL),
(10, 'CONSETI', NULL),
(11, 'Formulários', NULL),
(12, 'Manuais de Equipamentos', NULL),
(13, 'ASSINF', 7),
(14, 'Contabilidade', 7),
(15, 'DAAD', 7),
(16, 'DAF', 7),
(17, 'DGAF', 7),
(18, 'DIVDOC', 7),
(19, 'DIVORÇ', 7),
(20, 'DIVPAT', 7),
(21, 'DRH', 7),
(22, 'SubGestão', 7),
(23, 'SUPEM', 7),
(24, 'Publicações Oficiais', NULL),
(25, 'RH', NULL),
(26, 'Viva Melhor', NULL);
Eu quero uma consulta onde os dados aparece na minha JSP relacionados…
desta forma aqui:
Cartilhas
CONSETI
Formulários
Manuais de Equipamentos
Procedimentos Operacionais e Administrativos
ASSINF
Contabilidade
DAAD
DAF
DGAF
DIVDOC
DIVORÇ
DIVPAT
DRH
SubGestão
SUPEM
Publicações Oficiais
RH
Rio 2016 - Imagens
Videos
Viva Melhor
As bibliotecas:
[i]ASSINF
Contabilidade
DAAD
DAF
DGAF
DIVDOC
DIVORÇ
DIVPAT
DRH
SubGestão
SUPEM[/i]
Elas tem um codPai 7, que é a biblioteca com o ID 7 (Procedimentos Operacionais e Administrativos)
As bibliocas relacionadas aparecem na frente da biblioteca PAI que é Procedimentos Operacionais e Administrativos.
Entendeu amigo ?
Muito obrigado amigo.
Esqueci de postar isso do meu banco:
--
-- Restrições para a tabela `biblioteca`
--
ALTER TABLE `biblioteca`
ADD CONSTRAINT `FKBiblioteca1` FOREIGN KEY (`CodPai`) REFERENCES `biblioteca` (`Codigo`) ON DELETE CASCADE ON UPDATE CASCADE;
^.~
O que você quer fazer? A aplicação é pequena?? Se for compensa usar JSTL .
Se vai usar Servlet e JSP então falta ai umas classes de banco ou usar o Pattern ActiveRecord.
Se vc é do PHP (como eu sou) vc não deve simplismente migrar funções do PHP para Java, aqui o buraco é mais embaixo.
Em Java vc deve se organizar. Deve saber um pouco do básico antes por exemplo o que é um objeto ResultSet.
o ResultSet possui métodos para percorrer o resultado do banco.
Se não quer complicar e é iniciante use o JSTL que vai ficar assim;
<sql:setDataSource var="dataSrc" url="jdbc:postgresql://localhost:5432/struts_basic"
driver="org.postgresql.Driver" user="postgres" password="delta28" />
<sql:query var="queryResults" dataSource="${dataSrc}">
select * from person
</sql:query>
<table border="1">
<tr>
<th>ID</th>
<th>Created</th>
<th>Title</th>
</tr>
<c:forEach var="row" items="${queryResults.rows}">
<tr>
<td><c:out value="${row.id}" /></td>
<td><c:out value="${row.firstname}" /></td>
<td><c:out value="${row.lastname}" /></td>
</tr>
</c:forEach>
</table>
De uma pesquisada qlqr dúvida poste aqui.
[quote=dumontbass]O que você quer fazer? A aplicação é pequena?? Se for compensa usar JSTL .
Se vai usar Servlet e JSP então falta ai umas classes de banco ou usar o Pattern ActiveRecord.
Se vc é do PHP (como eu sou) vc não deve simplismente migrar funções do PHP para Java, aqui o buraco é mais embaixo.
Em Java vc deve se organizar. Deve saber um pouco do básico antes por exemplo o que é um objeto ResultSet.
o ResultSet possui métodos para percorrer o resultado do banco.
Se não quer complicar e é iniciante use o JSTL que vai ficar assim;
<sql:setDataSource var="dataSrc" url="jdbc:postgresql://localhost:5432/struts_basic"
driver="org.postgresql.Driver" user="postgres" password="delta28" />
<sql:query var="queryResults" dataSource="${dataSrc}">
select * from person
</sql:query>
<table border="1">
<tr>
<th>ID</th>
<th>Created</th>
<th>Title</th>
</tr>
<c:forEach var="row" items="${queryResults.rows}">
<tr>
<td><c:out value="${row.id}" /></td>
<td><c:out value="${row.firstname}" /></td>
<td><c:out value="${row.lastname}" /></td>
</tr>
</c:forEach>
</table>
De uma pesquisada qlqr dúvida poste aqui.[/quote]
meu amigo, o problema não é a JSP e sim a QUERY… um método no Java buscando os dados no banco… Como este aqui:
public List<Biblioteca> findBiblioteca() throws Exception {
open();
List<Biblioteca> lista = new ArrayList<Biblioteca>();
stmt = con.prepareStatement("select * from biblioteca");
rs = stmt.executeQuery();
while (rs.next()) {
Biblioteca b = new Biblioteca(rs.getInt("Codigo"),
rs.getString("Nome"), rs.getInt("CodPai"));
lista.add(b);
}
close();
return lista;
}
Só que desta forma não há relacionamento… o que eu quero é o relacionamento e mostrando desta forma na JSP:
Cartilhas
CONSETI
Formulários
Manuais de Equipamentos
Procedimentos Operacionais e Administrativos
ASSINF
Contabilidade
DAAD
DAF
DGAF
DIVDOC
DIVORÇ
DIVPAT
DRH
SubGestão
SUPEM
Publicações Oficiais
RH
Rio 2016 - Imagens
Videos
Viva Melhor
entao pra ‘contabilidade’ estar ali, teria que ser
(14, ‘Contabilidade’, 13),
e nao (14, ‘Contabilidade’, 7),
Se eu fosse fazer faria um select de toda essa tabela biblioteca e agruparia com hashmap pela chave.
Por select nao sei
falow
[quote=eduJava]entao pra ‘contabilidade’ estar ali, teria que ser
(14, ‘Contabilidade’, 13),
e nao (14, ‘Contabilidade’, 7),
Se eu fosse fazer faria um select de toda essa tabela biblioteca e agruparia com hashmap pela chave.
Por select nao sei
falow[/quote]
Teria algum exemplo de agrupamento de hashmap pela chave seu ai ?
Vou dando uma pesquisada aqui, nunca utilizei desta forma.
Obrigado.
veja
vc pode criar um hashmap assim
hashmap<Integer,List> hash = new hashmap<Integer,List>();
veja vc vai ter um put com
chave 6 e o value : lista vazia
chave 7 e uma lista com 13,15,16,17,18,19,20,21,22,23
chave 8 e o value : lista vazia
chave 13 e uma lista com 14
depois vc itera tudo
vc terá q verificar dentro do seu for se ele ja nao existe no caso da chave 7, ela tem o 13 que é uma chave, entao vc só mostra aquele q tem lista vazia até começar o loop denovo, e fica nessa recursividade
to com preguiça de fazer um exemplo, tenho q jogar batlefield 3 agora auehueheuehe
[quote=eduJava]veja
vc pode criar um hashmap assim
hashmap<Integer,List> hash = new hashmap<Integer,List>();
veja vc vai ter um put com
chave 6 e o value : lista vazia
chave 7 e uma lista com 13,15,16,17,18,19,20,21,22,23
chave 8 e o value : lista vazia
chave 13 e uma lista com 14
depois vc itera tudo
vc terá q verificar dentro do seu for se ele ja nao existe no caso da chave 7, ela tem o 13 que é uma chave, entao vc só mostra aquele q tem lista vazia até começar o loop denovo, e fica nessa recursividade
to com preguiça de fazer um exemplo, tenho q jogar batlefield 3 agora auehueheuehe
[/quote]
Interessante… vou tentar fazer aqui agora…
Obrigado.