Quantcast
Channel: Infraestrutura - GUJ
Viewing all 1856 articles
Browse latest View live

Finalizado - Como salvar no MySQL uma Lista que pode variar de tamanho

0
0

@Tiago_Santana escreveu:

Olá Galera, minha duvida é a seguinte:
Estou desenvolvendo um sistema de vendas(Java), e em certa parte preciso salvar as informações da venda (meio obvio, rsrs). Pois bem, vou salvar informações padrões como nome do cliente, numero da venda, etc. Meu maior problema é, a venda possui itens(produtos comprados), com descrição, quantidade e valor, que necessitam ser salvas no banco, porém eu não sei quantos itens determinada venda irá possuir, pode ser 1 ou um milhão(exagero né?), como vou criar a tabela no banco para que possa receber a quantidade correta de intens, sem ter que criar espaços desnecessários???
Desde já agradeço.

Mensagens: 4

Participantes: 2

Ler tópico completo


Script (Select) Banco de dados

0
0

@Hilker_Kaiko escreveu:

estou usando banco de dados e sendo ele o meu ponto fraco, surgiu varias duas em como fazer select's. preciso de uma ajuda para montar alguns scripts. Lembrando que as tabelas são relacionadas.
segue alguns que preciso:

1- preciso fazer um select onde informo uma descrição de marca e traga os dados ordenados.
2- preciso fazer um select onde informo uma descrição de modelo do veiculo e traga os dados ordenados.

segue os prints das tabelas
Desde ja agradeço..

Tabela veiculo

Tabela modeloveiculo

Tabela marcaveiculo

Mensagens: 2

Participantes: 2

Ler tópico completo

Postgresql 9.4 com JRE8

0
0

@RogerBenites escreveu:

Galera qual o driver correto para o postgresql 9.4 para jre8.
Já testei TODOS os drivers p e nenhum aceita.
ps: é um webservice.

Mensagens: 2

Participantes: 2

Ler tópico completo

Trigger SQL Server

0
0

@LSC escreveu:

Ela deveria atualizar o campo saldo da tabela pai(father), toda vez que ocorresse um insert na tabela soon, porém não está funcionando. O update no registro da tabela father só deve ocorrer na conta que foi realizado o insert na tabela soon?

create trigger calcula
 on soon
  after insert
   as
   begin
     declare
       @cont varchar,
       @cred money,
       @deb money,
       @sald money
      
             set @cred = (select SUM(valor) from soon where tipo_transacao = 'C'and conta = @cont)
             set @deb = (select SUM(valor) from soon where tipo_transacao = 'D'  and conta = @cont)
       select @sald = @cred - @deb , @cont = conta from inserted
       
      update father set saldo = @sald 
      where conta = @cont
    end
    
GO

Mensagens: 1

Participantes: 1

Ler tópico completo

Padronização de escrita SQL

0
0

@karanalpe escreveu:

Bom dia pessoal!!!

Padronização de escrita do SQL é importante para o desenvolvimento de sistemas. Contudo não concordo com a forma que alguns colegas escrevem as suas consultas e gostaria de opinião de vocês.

1 - Sou contra o uso de alias em uma consulta;

Por exemplo:

SELECT cliente.nome,
       endereco.rua,
       endereco.numero,
       endereco.cidade,
       tipo_telefone.descricao,
       telefone.numero,
       pedido.valor_total,
       tipo_pedido.descricao,
       produto.descricao,
       produto.valor,
       item_pedido.quantidade
       item_pedido.valor_total
FROM cliente 
    INNER JOIN endereco
      ON (cliente.id = endereco.id_cliente)
    LEFT JOIN telefone
      ON (cliente.id = telefone.id_cliente)
    INNER JOIN tipo_telefone
      ON (telefone.id_tipo_telefone = tipo_telefone.id)
    INNER JOIN pedido
      ON (cliente.id = pedido.id_cliente)
    INNER JOIN tipo_pedido
      ON (pedido.id_tipo_pedido = tipo_pedido.id)
    INNER JOIN item_pedido
      ON (pedido.id = item_pedido.id_pedido)
    INNER JOIN produto
      ON (item_pedido.id_produto = produto.id)
WHERE cliente.ativo = true
  AND pedido.valor_total > 1000
ORDER BY cliente.nome

Dessa forma eu consigo enxergar sem problemas a qual tabela pertence cada campo. Vejamos o mesmo sql, utilizando alias:

SELECT c.nome,
       e.rua,
       e.numero,
       e.cidade,
       tt.descricao,
       t.numero,
       p.valor_total,
       tp.descricao,
       pr.descricao,
       pr.valor,
       ip.quantidade
       ip.valor_total
FROM cliente c 
    INNER JOIN endereco e
      ON (c.id = e.id_cliente)
    LEFT JOIN telefone t
      ON (c.id = t.id_cliente)
    INNER JOIN tipo_telefone tt
      ON (t.id_tipo_telefone = tt.id)
    INNER JOIN pedido p
      ON (c.id = p.id_cliente)
    INNER JOIN tipo_pedido tp
      ON (p.id_tipo_pedido = tp.id)
    INNER JOIN item_pedido ip
      ON (p.id = ip.id_pedido)
    INNER JOIN produto pr
      ON (ip.id_produto = pr.id)
WHERE c.ativo = true
  AND p.valor_total > 1000
ORDER BY c.nome

OK. O sql ficou menor! Porém, dessa forma eu tenho dificuldades em identificar a qual tabela pertence cada campo. Assim sendo, tenho que consultar na estrutura do FROM o que significa determinada sigla!

2 - Sou a favor da indentação do código para facilitar a leitura (inclusive no código fonte do sistema).

Vejamos o mesmo código sem indentação:

SELECT cliente.nome,
endereco.rua,
endereco.numero,
endereco.cidade,
tipo_telefone.descricao,
telefone.numero,
pedido.valor_total,
tipo_pedido.descricao,
produto.descricao,
produto.valor,
item_pedido.quantidade
item_pedido.valor_total
FROM cliente 
INNER JOIN endereco ON (cliente.id = endereco.id_cliente)
LEFT JOIN telefone ON (cliente.id = telefone.id_cliente)
INNER JOIN tipo_telefone ON (telefone.id_tipo_telefone = tipo_telefone.id)
INNER JOIN pedido ON (cliente.id = pedido.id_cliente)
INNER JOIN tipo_pedido ON (pedido.id_tipo_pedido = tipo_pedido.id)
INNER JOIN item_pedido ON (pedido.id = item_pedido.id_pedido)
INNER JOIN produto ON (item_pedido.id_produto = produto.id)
WHERE cliente.ativo = true
AND pedido.valor_total > 1000
ORDER BY cliente.nome

Percebem como fica mais difícil para realizar a leitura? Já peguei consultas muito maiores do que essa. Por isso, acho fundamental criar uma padronização.

Por favor deem suas opiniões!

Mensagens: 7

Participantes: 5

Ler tópico completo

Como disparar uma trigger ao executar um disable trigger?

0
0

@Daniel_Pitthan_Silve escreveu:

A ideia é montar uma auditoria, de quem o que, possa estar desabilitando alguma trigger do banco de dados.
Basicamente gostaria de disparar uma trigger, no instante que for executado o comando disable trigger, e guardar isso em uma tabela de log.
Cheguei bem perto da solução com a trigger abaixo, mas o disable trigger não passa pelo evento DDL_DATABASE_LEVEL_EVENTS, pelo menos não no sql server 2012.

alter trigger trg_ddl_events
on DATABASE 
FOR DDL_DATABASE_LEVEL_EVENTS 
AS

DECLARE @data XML  
SET @data = EVENTDATA()  
INSERT ddl_log   
   (PostTime, DB_User, Event, TSQL)   
   VALUES   
   (GETDATE(),   
   CONVERT(nvarchar(100), CURRENT_USER),   
   @data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'),   
   @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(2000)') ) ;  
go

Mensagens: 1

Participantes: 1

Ler tópico completo

Banco De Dados

0
0

@Ronaldo_Junior escreveu:

Ola pessol, quero aprender e mim especializar em BD, alguem pode mim dar algumas dicas e mim ajudar nesse aspecto?

Obrigado.

Mensagens: 1

Participantes: 1

Ler tópico completo

Aplicação Java com Derby(JavaDB), Criando aplicações e Finalizando para distribuição

0
0

@Marcos_Gabriel escreveu:

Galera a algumas semanas venho desenvolvendo um programa em java com banco de dados Derby, com muitos problemas, erros, e buscas no google, e aqui no guj... rs rs Fiz essa compilação que pode ajudar muito quem for tentar fazer algo parecido.

Primeiro de tudo e mais importante( Acredite!) Configuração do Ambiente e Instalação do Derby(JavaDb ou Apache)

Instalação do Derby fora de IDES

Para poder instalar o Derby, primeiro é necessário baixar o arquivo zip ou tar do Derby do site do Derby na Web.

Acesse a página http://db.apache.org/derby/derby_downloads.html utilizando o navegador Web. Esta página contém várias distribuições do Derby, incluindo pacotes instantâneos e distribuições binárias de versões estáveis. Também são encontradas informações sobre como acessar a distribuição do código ativo do Derby. As distribuições se encontram em pacotes bin, lib e src. Este guia assume que foi baixado o pacote de distribuição bin.
Extraia o pacote baixado. A instalação extraída contém vários subdiretórios:
• O subdiretório demo contém programas de demonstração.
• O subdiretório frameworks contém scripts para a execução de utilitários e configuração do ambiente.
• O subdiretório javadoc contém a documentação da api gerada a partir dos comentários do código fonte.
• O subdiretório doc contém a documentação do Derby.
• O subdiretório lib contém os arquivos jar do Derby.

Configuração do ambiente Java

É necessário configurar a variável de ambiente PATH para que a JVM e os aplicativos Java executem corretamente. Isto é extremamente importante para o sucesso da instalação, porque a variável PATH permite que o sistema operacional encontre os programas apropriados a partir de qualquer diretório.
Se houver mais de uma JVM instalada, a JVM que se deseja utilizar deve estar antes de qualquer outra na variável PATH.
Para verificar a variável de ambiente PATH:
1. Em uma janela de comando, digite: java -version
Se o caminho estiver definido corretamente, será exibida uma informação indicando a versão da JVM.
2. Se o comando não retornar a versão correta da JVM, a variável PATH deve ser configurada adicionando o subdiretório bin do diretório da JVM ao começo do caminho.
Por exemplo, se o diretório for C:\JDK1.4 , deve ser adicionado C:\JDK1.4\bin ao começo do caminho.
3. O passo 1 deve ser repetido para haver certeza que a variável de ambiente PATH está configurada corretamente.

Instalação do Derby no Netbeans(Se o seu Netbeans não veio com o Glassfish embutido)

Ferramentas > Servidores : O GlassFish Server deve aparecer. Se não estiver aparecendo tera de instalar; Va em Adicionar Servidor... > GlassFish e siga os passos!
Trabalhando com o banco de dados
Nesse link temos algumas instruções para se trabalhar com o banco de dados na ide(https://netbeans.org/kb/docs/ide/java-db_pt_BR.html)
• Configurando o Banco de Dados
• Registrando o Banco de Dados no NetBeans IDE
• Iniciando o Servidor e Criando um Banco de Dados
• Estabelecendo Conexão com o Banco de Dados

Classes Bean e DAO:

package model.bean;
/**
 *
 * @author Marcos
 */
public class Funcionario {
    
    private String nome;
    private String email;
    private String nascimento;
    private String cpf;
    private String rg;
    private String telefone1;
    private String telefone2;
    private String cargo;
    private String formação;
    private String atributos;
    private String cargahoraria;
    private String salario;

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * @return the nascimento
     */
    public String getNascimento() {
        return nascimento;
    }

    /**
     * @param nascimento the nascimento to set
     */
    public void setNascimento(String nascimento) {
        this.nascimento = nascimento;
    }

    /**
     * @return the cpf
     */
    public String getCpf() {
        return cpf;
    }

    /**
     * @param cpf the cpf to set
     */
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    /**
     * @return the rg
     */
    public String getRg() {
        return rg;
    }

    /**
     * @param rg the rg to set
     */
    public void setRg(String rg) {
        this.rg = rg;
    }

    /**
     * @return the telefone1
     */
    public String getTelefone1() {
        return telefone1;
    }

    /**
     * @param telefone1 the telefone1 to set
     */
    public void setTelefone1(String telefone1) {
        this.telefone1 = telefone1;
    }

    /**
     * @return the telefone2
     */
    public String getTelefone2() {
        return telefone2;
    }

    /**
     * @param telefone2 the telefone2 to set
     */
    public void setTelefone2(String telefone2) {
        this.telefone2 = telefone2;
    }

    /**
     * @return the cargo
     */
    public String getCargo() {
        return cargo;
    }

    /**
     * @param cargo the cargo to set
     */
    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    /**
     * @return the formação
     */
    public String getFormação() {
        return formação;
    }

    /**
     * @param formação the formação to set
     */
    public void setFormação(String formação) {
        this.formação = formação;
    }

    /**
     * @return the atributos
     */
    public String getAtributos() {
        return atributos;
    }

    /**
     * @param atributos the atributos to set
     */
    public void setAtributos(String atributos) {
        this.atributos = atributos;
    }

    /**
     * @return the cargahoraria
     */
    public String getCargahoraria() {
        return cargahoraria;
    }

    /**
     * @param cargahoraria the cargahoraria to set
     */
    public void setCargahoraria(String cargahoraria) {
        this.cargahoraria = cargahoraria;
    }

    /**
     * @return the salario
     */
    public String getSalario() {
        return salario;
    }

    /**
     * @param salario the salario to set
     */
    public void setSalario(String salario) {
        this.salario = salario;
    }
    
    
}

package model.dao;

import Connection.Connector;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import model.bean.Funcionario;

/**
 *
 * @author MarcosIY
 */
public class FuncionarioDAO {
    
    public void creat(Funcionario f){
    
    Connection con = Connector.getConnection();
    PreparedStatement stmt = null;
    
    
        try {
            stmt = con.prepareStatement("INSERT INTO app.bancofuncionario (nome,email,nascimento,cpf,rg,telefone1,telefone2,cargo,cargahoraria,formação,atributos,salario) VaLUES(?,?,?,?,?,?,?,?,?,?,?,?)");
            stmt.setString(1,f.getNome());
            stmt.setString(2,f.getEmail());
            stmt.setString(3,f.getNascimento());
            stmt.setString(4,f.getCpf());
            stmt.setString(5,f.getRg());
            stmt.setString(6,f.getTelefone1());
            stmt.setString(7,f.getTelefone2());
            stmt.setString(8,f.getCargo());
            stmt.setString(9,f.getCargahoraria());
            stmt.setString(10,f.getFormação());
            stmt.setString(11,f.getAtributos());
            stmt.setString(12,f.getSalario());
            
            
            stmt.executeUpdate();
            
            JOptionPane.showMessageDialog(null, "Salvo com sucesso");
                    } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro "+ex);
        } finally{
        
        Connector.closeConnection(con, stmt);
        }
    
    }
    
    public List<Funcionario> read(){
    
        Connection con = Connector.getConnection();
        PreparedStatement stmt = null;
        ResultSet rs = null;
        List<Funcionario> funcionarios = new ArrayList<>();
        
        try {
            stmt = con.prepareStatement("SELECT * FROM app.bancofuncionario");
            rs = stmt.executeQuery();
            
            while(rs.next()){
            
                Funcionario funcionario = new Funcionario();
                
                funcionario.setNome(rs.getString("nome"));
                funcionario.setEmail(rs.getString("email"));
                funcionario.setNascimento(rs.getString("nascimento"));
                funcionario.setCpf(rs.getString("cpf"));
                funcionario.setRg(rs.getString("rg"));
                funcionario.setTelefone1(rs.getString("telefone1"));
                funcionario.setTelefone2(rs.getString("telefone2"));
                funcionario.setCargo(rs.getString("cargo"));
                funcionario.setFormação(rs.getString("formação"));
                funcionario.setAtributos(rs.getString("atributos"));
                funcionario.setCargahoraria(rs.getString("cargahoraria"));
                funcionario.setSalario(rs.getString("salario"));
                
                funcionarios.add(funcionario);
            }
            
            
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro: "+ex);
        }finally{
            Connector.closeConnection(con, stmt, rs);        
            
        }
        
        return funcionarios;
        
    
    }
    
    public void update(Funcionario f){
    
    Connection con = Connector.getConnection();
    PreparedStatement stmt = null;
    
    
        try {
            stmt = con.prepareStatement("UPDATE app.bancofuncionario SET email = ?, nascimento = ?, cpf = ?, rg = ?, "
                    + "telefone1 = ?, telefone2 = ?, cargo = ?, cargahoraria = ?, formação = ?, atributos = ?, salario = ?  WHERE nome = ? or cpf = ? or rg = ?");
            
            stmt.setString(1,f.getEmail());
            stmt.setString(2,f.getNascimento());
            stmt.setString(3,f.getCpf());
            stmt.setString(4,f.getRg());
            stmt.setString(5,f.getTelefone1());
            stmt.setString(6,f.getTelefone2());
            stmt.setString(7,f.getCargo());
            stmt.setString(8,f.getCargahoraria());
            stmt.setString(9,f.getFormação());
            stmt.setString(10,f.getAtributos());
            stmt.setString(11,f.getSalario());
            stmt.setString(12,f.getNome());
            stmt.setString(13,f.getCpf());
            stmt.setString(14,f.getRg());
            
            stmt.executeUpdate();
            
            JOptionPane.showMessageDialog(null, "Atualizado com sucesso!");
                    } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao atalizar: "+ex);
        } finally{
        
        Connector.closeConnection(con, stmt);
        }
    
    }
    
    public void delete(Funcionario f){
    
    Connection con = Connector.getConnection();
    PreparedStatement stmt = null;
    
    
        try {
            stmt = con.prepareStatement("DELETE FROM app.bancofuncionario WHERE nome = ? or cpf = ? or rg = ?");
            stmt.setString(1,f.getNome());
            stmt.setString(2,f.getCpf());
            stmt.setString(3,f.getRg());
            
            stmt.executeUpdate();
            
            JOptionPane.showMessageDialog(null, "Deletado com sucesso!");
                    } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao Deletar: "+ex);
        } finally{
        
        Connector.closeConnection(con, stmt);
        }
    
    }
    
    
    
    
    
}

Classes Connection enquanto netbeans

/**
 *
 * @author MarcosIY
 */
public class Connector {
    
     
    
    private static final String DRIVER = "org.apache.derby.jdbc.ClientDriver";
    private static final String URL = "jdbc:derby://localhost:1527/BancoGerenciador";
    private static final String USER = "Usuario";
    private static final String PASS = "Senha";
    
    public static Connection getConnection(){
        
       //Servidor do banco iniciado pelo NetBeans
       //Util enquanto cria e configura o banco e as tabelas pelo NetBeans
        
        try {
            Class.forName(DRIVER);
            return java.sql.DriverManager.getConnection(URL, USER, PASS);
            
        } catch (ClassNotFoundException | SQLException ex) {
            throw new RuntimeException("Erro na conecção: ",ex);
        }}

   /*...*/
  //Resto do codigo e imports na versão definitiva abaixo:

Classes Connection fora do netbeans para distribuição

package Connection;

import java.io.PrintWriter;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import org.apache.derby.impl.drda.NetworkServerControlImpl;

/**
 *
 * @author MarcosIY
 */
public class Connector {
    
    
    
    private static final String DRIVER = "org.apache.derby.jdbc.ClientDriver";
    private static final String URL = "jdbc:derby://localhost:1527/Banco"; //porta padrão
    private static final String USER = "Usiario";
    private static final String PASS = "Senha ";
    
    public static Connection getConnection(){
        //Iniciar o banco sem precisar o fazer manualmente toda vez que executar e sem usar o netbeans
        try {
System.setProperty("derby.system.home", "\\MyDB\\.netbeans-derby"); 
// Crie uma pasta onde você quiser que fique o seu banco e set aqui
//pode ser qualquer diretorio incluindo a pasta onde estara o executavel(.jar)
//nesse Caso: C:\\MyDB\\.netbeans-derby
NetworkServerControlImpl networkServer = new NetworkServerControlImpl();
networkServer.start(new PrintWriter(System.out));
System.out.println("Banco Iniciado");
} catch (Exception ex) {
System.out.println("Não conseguiu iniciar banco de dados.");

}
       
        
        try {
            Class.forName(DRIVER);
            return java.sql.DriverManager.getConnection(URL, USER, PASS);
            
        } catch (ClassNotFoundException | SQLException ex) {
            throw new RuntimeException("Erro na conecção: ",ex);
        }}

public static void closeConnection(Connection con){

     try {
        if(con!=null){
            con.close();
        } 
     }catch (SQLException ex) {
            //menssagem
     }
    
}

public static void closeConnection(Connection con, PreparedStatement stmt){

    closeConnection(con);
    
    
        try {
            if(stmt!=null){
            stmt.close();
            }   
        }catch (SQLException ex) {
            //menssagem
        }
    
}

public static void closeConnection(Connection con, PreparedStatement stmt, ResultSet rs){

    closeConnection(con, stmt);
    
    
        try {
            if(rs!=null){
            rs.close();
            }   
        }catch (SQLException ex) {
            //menssagem
        }


}

public static void Fazbackup(Connection con){

        
        try {
            
            String backupdirectory = "\\MyDB\\.netbeans-derby";
            CallableStatement cs = con.prepareCall ("CALL SYSCS_UTIL.SYSCS_BACKUP_DATABASE (?)");
            cs.setString (1, backupdirectory);
            cs.execute ();
            cs.close ();
          JOptionPane.showMessageDialog(null, "Backup feito com sucesso");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro no backup"+ ex);
        }


}

public static void LerBackup(String diretorio){

    String a = diretorio;
    
    try {
         Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
            DriverManager.getConnection("jdbc:derby:BancoGerenciador;restoreFrom="+a);
           JOptionPane.showMessageDialog(null, "Backing Up Realizado com sucesso!");
        } catch (InstantiationException ex) {
            JOptionPane.showMessageDialog(null, "Erro no backing Up"+ ex);
        } catch (IllegalAccessException ex) {
           JOptionPane.showMessageDialog(null, "Erro no backing Up"+ ex);
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro no backing Up"+ ex);
        } catch (ClassNotFoundException ex) {
            JOptionPane.showMessageDialog(null, "Erro no backing Up"+ ex);
        } 




}

}

Não esqueça de adicionar os arquivos .jar, bibliotecas, docs, etc no classpath do projeto

Pode (E é muito provável que tenha) mais coisa, mas eu só sei isso, e se tem eu não achei e essa é uma oportunidade pra agregar e compartilhar o conhecimento (Eu sei como é difícil ter acesso a todo o conteúdo quando se estuda por conta).

http://db.apache.org/derby/ https://db.apache.org/derby/docs/10.2/pt_BR/getstart/getstartderby.pdf
http://db.apache.org/derby/derby_downloads.html#Latest+Official+Release

Paz...

Mensagens: 1

Participantes: 1

Ler tópico completo


Null Pointer Exception?

0
0

@fabiio2 escreveu:

Gostaria que me ajudassem numa questão.
Tenho um DAO que está recuperando informações do banco para montar um objeto.
Porém, quando certa data está vazia, ele não executa o if que compara se o registro está vazio ou não.

if (!rs.getDate("DATA_ENVIO_APROV").equals(null))

Aí já cai no catch.
Poderiam me ajudar?
A data no banco está vazia mesmo, mas era pra fazer a validação, né?
Segue código do DAO:

public Solicitacao buscarPorId(long id) throws SQLException {
	Solicitacao solicitacao = null;
	Connection conn = null;
	PreparedStatement pst = null;
	try {
		conn = ConexaoBanco.abrirConexao();
		String sql = "select so.ID_SOLICITACAO, so.TIPO_PEDIDO, so.RESPONSAVEL_PEDIDO, so.DESCRICAO_PEDIDO, "
				+ "so.APROVACAO_PEDIDO, so.LOCAL_CHEGADA, so.STATUS_PEDIDO, so.DATA_INICIAL, "
				+ "so.DATA_ENVIO_APROV, so.DATA_RET_APROV, so.DATA_FINAL, so.PRAZO_LIMITE, so.DATA_FINAL_PREVISTA, "
				+ "se.ID_SETOR, se.DESCRICAO_SETOR, e.ID_ESTOQUE, e.DESCRICAO_ESTOQUE " + "from solicitacao so "
				+ "join setor se on so.SETOR = se.ID_SETOR " + "join estoque e on so.ESTOQUE = e.ID_ESTOQUE "
				+ "where ID_SOLICITACAO like ? " + "order by ID_SOLICITACAO desc";
		pst = conn.prepareStatement(sql);
		pst.setLong(1, id);
		ResultSet rs = pst.executeQuery();

		while (rs.next()) {
			solicitacao = new Solicitacao();
			Setor setor = new Setor();
			Estoque estoque = new Estoque();
			solicitacao.setIdSolicitacao(rs.getLong("ID_SOLICITACAO"));
			solicitacao.setTipoPedido(TipoPedido.convertStringToTipoPedido(rs.getString("TIPO_PEDIDO")));
			solicitacao.setResponsavelPedido(rs.getString("RESPONSAVEL_PEDIDO"));
			setor.setIdSetor(rs.getInt("ID_SETOR"));
			setor.setDescricaoSetor(rs.getString("DESCRICAO_SETOR"));
			solicitacao.setSetor(setor);
			estoque.setIdEstoque(rs.getInt("ID_ESTOQUE"));
			estoque.setDescricaoEstoque(rs.getString("DESCRICAO_ESTOQUE"));
			solicitacao.setEstoque(estoque);
			solicitacao.setDescricaoCompra(rs.getString("DESCRICAO_PEDIDO"));
			solicitacao.setAprovacao(AprovacaoPedido.convertStringToAprovacao(rs.getString("APROVACAO_PEDIDO")));
			solicitacao.setLocalChegada(LocalEntrega.convertStringToLocal(rs.getString("LOCAL_CHEGADA")));
			solicitacao.setStatusSolicitacao(StatusCompra.convertStringToStatus(rs.getString("STATUS_PEDIDO")));
			solicitacao.setDataInicialPedido(ConverteUtil.convertDateToLocal(rs.getDate("DATA_INICIAL")));
			if (!rs.getDate("DATA_ENVIO_APROV").equals(null)) {
				solicitacao.setDataEnvioAprovacao(ConverteUtil.convertDateToLocal(rs.getDate("DATA_ENVIO_APROV")));
			}
			if (!rs.getDate("DATA_RET_APROV").equals(null)) {
				solicitacao.setDataRetornoAprovacao(ConverteUtil.convertDateToLocal(rs.getDate("DATA_RET_APROV")));
			}
			if (!rs.getDate("DATA_FINAL").equals(null)) {
				solicitacao.setDataFinal(ConverteUtil.convertDateToLocal(rs.getDate("DATA_FINAL")));
			}
			solicitacao.setPrazoLimite(ConverteUtil.convertDateToLocal(rs.getDate("PRAZO_LIMITE")));
			solicitacao.setDataFinalPrevista(ConverteUtil.convertDateToLocal(rs.getDate("DATA_FINAL_PREVISTA")));
		}

		pst.close();
		conn.close();

	} catch (Exception e) {

		e.printStackTrace();
		JOptionPane.showMessageDialog(null, e.getMessage());
	} finally {
		pst.close();
		conn.close();
	}
	return solicitacao;
}

Mensagens: 3

Participantes: 2

Ler tópico completo

Imagem Docker com PHP 5.6 e Apache

0
0

@plazari15 escreveu:

Olá pessoal,

estou precisando de uma imagem docker que seja bem simples de configurar para rodar o apache 2 e o PHP 5.6, eu estou buscando alguma com uma boa documentação, alguém tem alguma recomendação?

Preferência por imagens que eu consiga apontar o banco de dados que já esta na minha maquina local.

Mensagens: 1

Participantes: 1

Ler tópico completo

Problema com update

0
0

@YuriDeveloper escreveu:

Quando dou um sudo apt-get install -f obtenho um erro:

sudo apt-get install -f
Lendo listas de pacotes... Pronto
Construindo árvore de dependências       
Lendo informação de estado... Pronto
Os seguintes pacotes foram instalados automaticamente e já não são necessários:
  linux-headers-4.8.0-36 linux-headers-4.8.0-36-generic linux-image-4.8.0-36-generic linux-image-extra-4.8.0-36-generic
  snap-confine
Utilize 'sudo apt autoremove' para os remover.
0 pacotes atualizados, 0 pacotes novos instalados, 0 a serem removidos e 15 não atualizados.
W: Não usando travamento para arquivo de trava somente leitura /var/lib/dpkg/lock

Mensagens: 1

Participantes: 1

Ler tópico completo

Glassfish 2.1.1 - Parou de logar

0
0

@demys escreveu:

Pessoal

Alterei o arquivo asenv.conf do Glassfish 2.1.1 para que este utilize o JAVA 8.

O Servidor iniciou normalmente e identificou o jdk 1.8.0_131 e os projetos funcionam normalmente, porém o log parou de funcionar.

O Log no arquivo .../logs/server.log é gerado somente enquanto o glassfish está sendo iniciado.
Mas após as aplicações serem iniciadas, não é gerada mais nenhuma linha de log.

Alguém já passou por esse problema?

Mensagens: 1

Participantes: 1

Ler tópico completo

Gravação de arquivo CSV no MYSQL via PHP

0
0

@edalcoli escreveu:

O problema

Preciso resolver um problema relacionado à gravação em banco de dados MYSQL a partir de um arquivo CSV. O problema, s.m.j., está na cláusula SQL negritada abaixo (arquivo "importa-ltm-resultados.php"). O curioso é que utilizando essa mesma sintaxe / modelo de cláusula eu consegui gravar corretamente um outro arquivo CSV em um outro banco de dados / tabela (a diferença é que os campos gravados / exportados eram todos VARCHAR). A única coisa que me chamou a atenção é o fato de haver um espaço em branco ao final do último campo na cláusula SQL (pelo comando Echo me parece isto) que não sei como eliminá-lo. Creio que o problema possa estar relacionado ao campo DATA. Abaixo segue o SQL da tabela onde estou tentando gravar, assim como, o arquivo CSV. A propósito, não consegui de jeito nenhum salvar a data no arquivo CSV no formato AAAA-MM-DD, por isso, editei-a fora do excel para o formato "AAAA-MM-DD". Enfim, sou iniciante em PHP mas tenho boa noção de lógica de programação e banco de dados, mas o problema em questão é algum detalhe que está além da minha condição atual de entendimento.

importa-ltm-resultados.php

<?php
$strcon = mysqli_connect('localhost','root','teste','loteria') or die('Erro ao conectar ao banco de dados loteria');
$arquivo = fopen ('ltm-resultados.csv', 'r');
$cont = 0;
while(!feof($arquivo))
{
$linha = fgets($arquivo, 1024);
$dados = explode(';', $linha);
Print_r ($dados);
// Pega a data no formato dd/mm/yyyy do arquivo CSV
// $data2 = $dados[1];
// Explode a data para entrar no formato aceito pelo DB
// $dataeditada = explode('/', $data2);
// $datadb = $dataeditada[2].'-'.$dataeditada[1].'-'.$dataeditada[0];
if ($dados[0] != "0" && !empty($linha))
{
$cont = $cont +1;
$sql = "INSERT INTO ltm-resultados VALUES ";
$sql .= "($dados[0], $dados[1], $dados[2], $dados[3], $dados[4], $dados[5], $dados[6], $dados[7], $dados[8], $dados[9], $dados[10], $dados[11], $dados[12], $dados[13], $dados[14], $dados[15], $dados[16], $dados[17], $dados[18], $dados[19], $dados[20], $dados[21])";

echo $sql.$cont;
mysqli_query($strcon,$sql) or die("Erro ao tentar cadastrar o registro");
}
}
fclose($arquivo);
echo "Gravados ".$cont." registros";
?>

SQL de criação da tabela

CREATE TABLE ltm-resultados (
concurso int(4) NOT NULL,
data date NOT NULL,
dz1 int(2) NOT NULL,
dz2 int(2) NOT NULL,
dz3 int(2) NOT NULL,
dz4 int(2) NOT NULL,
dz5 int(2) NOT NULL,
dz6 int(2) NOT NULL,
dz7 int(2) NOT NULL,
dz8 int(2) NOT NULL,
dz9 int(2) NOT NULL,
dz10 int(2) NOT NULL,
dz11 int(2) NOT NULL,
dz12 int(2) NOT NULL,
dz13 int(2) NOT NULL,
dz14 int(2) NOT NULL,
dz15 int(2) NOT NULL,
dz16 int(2) NOT NULL,
dz17 int(2) NOT NULL,
dz18 int(2) NOT NULL,
dz19 int(2) NOT NULL,
dz20 int(2) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Resultados da lotomania';

-- Indexes for dumped tables
-- Indexes for table ltm-resultados

ALTER TABLE ltm-resultados
ADD PRIMARY KEY (concurso),
ADD UNIQUE KEY data (data);

Arquivo CSV de teste

1;1999-10-02;16;11;88;32;25;0;70;78;73;61;90;89;46;95;6;33;34;21;14;22
2;1999-10-09;76;63;18;44;84;11;55;93;8;29;82;62;17;64;24;14;37;97;49;51
3;1999-10-16;34;8;10;11;99;28;67;20;55;74;45;48;85;91;79;57;47;22;17;54
4;1999-10-23;14;67;12;55;25;60;51;30;41;35;78;83;93;64;98;39;44;49;5;63
5;1999-10-30;39;32;65;8;51;42;17;92;43;71;28;73;98;69;59;54;20;87;99;0

Mensagens: 1

Participantes: 1

Ler tópico completo

NoSQL x SQL

0
0

@Katia_Agnello escreveu:

Boa noite, pessoal.

Podemos afirmar que os bancos de dados NoSQL são mais performáticos que os bancos relacionais?

Alguém com experiência poderia dar uma visão sobre essa questão?

Desde já, agradecida.

Mensagens: 2

Participantes: 2

Ler tópico completo

Como inserir dados do tipo data e tempo?

0
0

@Douglas_Rafael escreveu:

Criei minha table e tentei assim, mas da erro na hora de inserir, vejam a imagem do erro lá embaixo;

CREATE TABLE Ocorrencia (
id_ocorrencia int(11) NOT NULL PRIMARY KEY,
-- data_hora datetime,
data_ocorrencia datetime ,
data_termino datetime,
tempo_duracao datetime
);
drop table ocorrencia;
CREATE TRIGGER trg_duracao BEFORE INSERT
ON Ocorrencia
FOR EACH ROW
SET NEW.tempo_duracao = (NEW.data_ocorrencia - data_termino);

INSERT INTO ocorrencia
(id_ocorrencia, data_ocorrencia, data_termino)
VALUES
('01','2017-05-25 08:30:05','2017-05-26 00:20:10');

Mensagens: 4

Participantes: 2

Ler tópico completo


Zerar o Identity de um banco que está no servidor vinculado

0
0

@Sidneipsj escreveu:

Fala galera, minha dúvida é a seguinte hoje possuo um BD que está em um servidor vinculado e possuo uma procedure no meu banco local que de tempos em tempos popula as tabelas desse banco vinvulado, porém, preciso zerar o identity a cada inserção. Vi que o comando a seguir faz isso tranquilamente: DBCC CHECKIDENT('nomeDaTabela'),RESEED,0) , porém não consigo rodar esse comando chamando o servidorVinculado.nomedoBanco.nomeDaTabela que no caso ficaria mais ou menos assim: DBCC CHECKIDENT([serverVinculado].IntegrationDB.DBO.nomeDaTabela),RESEED,0). Alguém tem alguma idéia de como fazer isso?

Mensagens: 1

Participantes: 1

Ler tópico completo

Relatório banco de dados

0
0

@humnardo escreveu:

Galera é o seguinte, tenho que criar um relatório no SAP Business One, até ai beleza, ja criei, só que a pessoa q pediu o relatorio quer outro, beleza fui la e criei, ai ela disse que precisa da informação das duas tabelas juntas, vou postar os códigos e ver se alguem cosnegue me ajudar!

esse relatorio conta a quantidade de notas ficais faturadas de um lado e o outro a quantidade de notas devolvidas:

select COUNT(1) AS NF
,0 AS DEV
from OINV T0 where T0.U_Consig = 'N' and T0.DocDate between '[%0]' and '[%1]'

union

select 0 AS NF
, COUNT(1) AS DEV
from ORIN T0 where  T0.U_Consig = 'N' and T0.DocDate between '[%0]' and '[%1]'

esse aqui mostra quais notas foram devolvidas no periodo que a pessoa seleciona

select
T0.DocEntry 
   ,T0.CardCode
   ,T0.CardName
   from ORIN T0 
   where  T0.U_Consig = 'N' and T0.DocDate between '[%0]' and '[%1]'

Ambos estão funcionando, só que a pessoa que me pediu quer que tambem contenha
ela me disse isso:
"Vc consegue ajustar pra que considere também uma coluna das notas totais faturadas no período e somatórios ao final de cada coluna (notas faturadas e notas devolvidas)?"

me ajudem pls!!!!

Mensagens: 1

Participantes: 1

Ler tópico completo

Docker Start Ubuntu não funciona?

0
0

@guilherme.medeiros escreveu:

Prezados, criei um Container Ubuntu usando o seguinte comando:

docker run -d --name=ubuntu_alura ubuntu

E o mesmo foi criado corretamente

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
51966e4f86d3        ubuntu              "/bin/bash"         18 minutes ago      Exited (0) 12 minutes ago                       ubuntu_alura

Mas quando eu executo o comando start

[root@guilherme]/home/guilherme# docker start ubuntu_alura
ubuntu_alura

Ele não dá problemas, mas o container não roda

[root@guilherme]/home/guilherme# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              
PORTS               NAMES

Mensagens: 2

Participantes: 1

Ler tópico completo

Erro na instalação do Ubuntu

0
0

@allanassis escreveu:

logo após selecionar a partição de instalação, quando chega a parte de selecionar a região aparece esse erro.

Falha ao desmontar partições:
O instalador precisa fazer mudanças na tabela de partições, mas isto não é possível porque as partições nos seguintes pontos de montagem não puderam ser desmontadas:
/cdrom

Já tentei varias coisas e nada, alguém ai tem alguma ideia de como resolver?

Obs: To usando um pendrive pra instalar, e o meu pc não tem drive de dvd.

Mensagens: 1

Participantes: 1

Ler tópico completo

Como criar uma tabela com chave estrangeira de 2 tabelas

0
0

@Dayson_Rodrigues escreveu:

estou com 2 tabelas: Usuario e Grupo, e quero criar uma tabela com usuario_grupo que me mostre as chaves estrangeiras Usuario e Grupo como faço isso?

Mensagens: 3

Participantes: 3

Ler tópico completo

Viewing all 1856 articles
Browse latest View live




Latest Images