-
Conteúdo Similar
-
Por Laurofelipe
Estou fazendo um metodo para buscar dados em uma tabela, todas as linhas ou apenas conforme um nome, se for passado este parâmetro.
Para não ter que duplicar o mesmo código, por apenas dois objetos, (PreparedStatement e ResultSet), dentro do try {... tenho um if () {}...}...}, conforme código abaixo.
Acontece que não consegui instanciar, recebo um aviso de que não é possível instanciar estes objetos, sera?
Então, se inicializo fora, não tenho acesso dentro do if () {...}. Se inicializo dentro, não tenho depois como varrer o resultado (while ...).
Tenho como resolver?
Agradeço qualquer ajuda do pessoal mais calejado.
Lauro
public ArrayList<Atleta> atletaBuscar(String nome) {
ArrayList<Atleta> lista = new ArrayList<Atleta>();
String sqlConsulta = null;
try {
Connection conn = ConectaMySql.obtemConexao();
if (nome.isEmpty() || nome.equals("?")) { // buscar todos
sqlConsulta = "SELECT * FROM atleta ORDER BY atleta_nome ASC";
PreparedStatement ppStm = conn.prepareStatement(sqlConsulta);
} else { // buscar por nome ou parte dele
sqlConsulta = "SELECT * FROM atleta WHERE LOWER(atleta_nome) LIKE ? ORDER BY atleta_nome ASC";
PreparedStatement ppStm = conn.prepareStatement(sqlConsulta);
ppStm.setString(1, nome);
}
ResultSet rsAtleta = ppStm.executeQuery();
while(rsAtleta.next()) {
Atleta atle = new Atleta();
atle.setAtleta_id(rsAtleta.getInt(1));
....
lista.add(atle);
}
conn.close();
} catch (Exception e){
e.printStackTrace();
}
return lista;
}
Ja tentei conforme alguns post da net -> ResultSet rsAtleta = new ResultSet(); <- mas da o erro, que não pode ser instanciado
-
Por laryts
Olá,
Meu projeto é um site em html e jsp. E estou recuperando dados do banco de dados, e mostrando no jsp.
Fiz isso por meio de uma classa java.
AcessoDados.java
public static List<DetalhesLivro> getDetalhesLivroById(int id) { List<DetalhesLivro> ls = new LinkedList<>(); String sql = "select j.nrLivro, j.nmLivro, j.dtPublicacao, j.nrPagina, j.dsSuplemento, j.dsCadernosEspeciais, ec.dsConservacao, p.dsPeriodicidade, j.dsObservacao from muLivro j left outer join muEstadoConservacao ec on j.cdConservacao = ec.cdConservacao left outer join muPeriodicidade p on j.cdPeriodicidade = p.cdPeriodicidade where j.nrLivro = '"+id+"'"; try { ResultSet rs = conexao.getPreparedStatement(sql).executeQuery(); while (rs.next()) { DetalhesLivro dLivro = new DetalhesJornais(rs.getInt(1), rs.getString(2), rs.getTimestamp(3), rs.getInt(4), rs.getString(5).charAt(0), rs.getString(6).charAt(0), rs.getString(7), rs.getString(8), rs.getString(9)); ls.add(dLivro); } } catch (ClassNotFoundException | SQLException ex) { Logger.getLogger(DataAccess.class.getName()).log(Level.SEVERE, null, ex); } return ls; } livro.jsp
<% String cod = request.getParameter("pCod"); if (cod != "") { int codInt = Integer.parseInt(cod); DataAccess da = new DataAccess(); List<DetalhesJornais> djornais = da.getDetalhesJornalById(codInt); for (DetalhesJornais detalhesJornais : djornais) { %> <table> </table> <% } } %> E acontece algo muito estranho, quando voltou digitar o codigo para pesquisar, alguns registros retornam normalmente, e mostram no html normal. Mas alguns codigos vão para a pagina de erro, logo quando entra da linha
etalhesLivro dLivro = new DetalhesJornais(...);. Depois desta linha ele sai do while, e vai direto para o <html> da pagina livro.jsp ((pelo Debug consegui essas informações, porém não mostra nenhuma mensagem de erro no Debug))
Alguem pode me ajudar???
É um erro muito estranho, e até difícil de explicar, se não ficou claro. tento ser mais detalhista
-
Por mnmn
Olá pessoal.
Tenho o seguinte código onde tenho duas queries, na primeira capturo o COUNT do campo nome_usuario, na segunda seleciono os campos que desejo. Gostaria de melhorar a performance, fazendo uma só query. Alguém pode me ajudar?
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class TodosAgendamentosFuturos_model extends CI_Model{ public function main($funcionario, $dataAtual, $limit, $start) { //Array para guardar dados a serem retornados $resultados = array(); //QUERY TO BIND TOTALCOUNT $sql = "SELECT DISTINCT COUNT(u.nome_usuario) AS total FROM horariosfuncionario hfs INNER JOIN usuario u INNER JOIN statushorariofuncionario shf INNER JOIN funcionario f INNER JOIN agendamento a INNER JOIN formapagamentosalao fps ON a.codigo_formapagamentosalao = fps.codigo_formapagamentosalao AND a.codigo_usuario = u.codigo_usuario AND a.codigo_horariosfuncionario = hfs.codigo_horariosfuncionario AND shf.codigo_statushorariofuncionario = hfs.codigo_statushorariofuncionario AND f.codigo_funcionario = hfs.codigo_funcionario WHERE STR_TO_DATE(hfs.data_horariosfuncionario, '%d/%m/%Y') > STR_TO_DATE(?, '%d/%m/%Y') AND f.codigo_funcionario = ? ORDER BY STR_TO_DATE(hfs.data_horariosfuncionario, '%d/%m/%Y'), STR_TO_DATE(hfs.horario_horariosfuncionario,'%H:%i')"; $total = $this->db->query($sql, array($dataAtual, $funcionario)); //Selecionando todos agendamentos futuros $sql = "SELECT DISTINCT u.nome_usuario, u.telefone1_usuario, u.telefone2_usuario, a.codigo_agendamento, hfs.horario_horariosfuncionario, hfs.data_horariosfuncionario, a.comentario_agendamento, fps.nome_formapagamentosalao FROM horariosfuncionario hfs INNER JOIN usuario u INNER JOIN statushorariofuncionario shf INNER JOIN funcionario f INNER JOIN agendamento a INNER JOIN formapagamentosalao fps ON a.codigo_formapagamentosalao = fps.codigo_formapagamentosalao AND a.codigo_usuario = u.codigo_usuario AND a.codigo_horariosfuncionario = hfs.codigo_horariosfuncionario AND shf.codigo_statushorariofuncionario = hfs.codigo_statushorariofuncionario AND f.codigo_funcionario = hfs.codigo_funcionario WHERE STR_TO_DATE(hfs.data_horariosfuncionario, '%d/%m/%Y') > STR_TO_DATE(?, '%d/%m/%Y') AND f.codigo_funcionario = ? ORDER BY STR_TO_DATE(hfs.data_horariosfuncionario, '%d/%m/%Y'), STR_TO_DATE(hfs.horario_horariosfuncionario,'%H:%i') LIMIT ".$limit." OFFSET ".$start; $resultado = $this->db->query($sql, array($dataAtual, $funcionario)); //Percorrendo resultados retornados foreach ($resultado->result() as $row) { //Captura dia da semana da data enviada como parâmetro usando o helper dia_semana $dia = diasemana($dataAtual); //Adiciona resultados no array resultados array_push($resultados, array('nome_usuario' => $row->nome_usuario, 'telefone1_usuario' => $row->telefone1_usuario, 'telefone2_usuario' => $row->telefone2_usuario, 'codigo_agendamento' => $row->codigo_agendamento, 'horario' => $row->horario_horariosfuncionario, 'data' => $row->data_horariosfuncionario, 'nomeDiaSemana' => $dia, 'comentario' => $row->comentario_agendamento, 'formaPagamento' => $row->nome_formapagamentosalao)); } $rows = $resultados; $data = array( "success"=>true, "totalCount"=>$total->row()->total, "menu"=>$rows ); echo json_encode($data); } }
-