sexta-feira, 16 de outubro de 2009

MySQL: salvando resultado de select em arquivo

Você alguma vez já precisou salvar o resultado de um select feito no banco de dados para um arquivo para enviar a alguém?

O comando abaixo faz exatamente isso...

SELECT campo1, campo2 FROM tabela WHERE campoN="XYZ" INTO OUTFILE '/tmp/nome_arquivo.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';


Entendendo o comando:

SELECT, FROM, WHERE: sem comentários, se você não sabe o que significa isso então nem continue lendo rsrsrsrsrs

INTO OUTFILE: path e nome do arquivo que será gerado
FIELDS TERMINATED BY: é o separador dos campos, no exemplo acima é a vírgula
ENCLOSED BY: os campos serão colocados entre o caractér definido neste parâmetro, no caso do exemplo são  áspas duplas
LINES TERMINATED BY: quebra de linha (enter)




[]'s

segunda-feira, 12 de outubro de 2009

Preparatório para Certificação SCJP (Sun Certified Java Programmer)

Se você está interessado em tirar uma certificação java (SCJP) esse site pode lhe interessar:

http://www.javaead.com.br

Nele você encontrará material de estudo, forum e chat.

[]'s

domingo, 11 de outubro de 2009

Ajudar não custa nada...

Sou usuário do Ubuntu desde a versão 7.xx e gosto muito desse sistema operacional, embora não seja adepto a instalar jogos no meu notebook acho importante que se tenha um programa como o que foi desenvolvido para instalação de jogos, então uma forcinha não custa nada...

"Promoção ajude o ubuntu games a se manter no ar e concorra a 3 camisas do blog defendendoolinux no dia 30/10, para participar é simples copie e cole todo esse texto entre aspas, preservando a formatação html no seu blog e deixe um comentario nesse link com o link para a sua postagem. Além disso o defendendoolinux fará uma doação em dinheiro ao projeto."

quarta-feira, 2 de setembro de 2009

JPA e "last_insert_id"

Você já passou pelo problema de inserir um registro em uma tabela e logo a seguir precisar desse código pra relacionar com outra tabela (por exemplo....) e o seu objeto de persistência não retornar esse código?

Então seus problemas acabaram.... na classe da sua entidade, mais precisamente no campo que identifica a chave primária (autoincrement) da tabela, basta você inserir:

@GeneratedValue(strategy=GenerationType.IDENTITY)

Por exemplo:

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "codigo", nullable = false)
private Integer codigo;

Depois disso, após a chamada do commit você poderá chamar o método que retorna o código criado para o objeto, essa dica por retirada do endereço:

http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Identity_sequencing


T+

terça-feira, 11 de agosto de 2009

Icone para uma aplicação J2ME

Opa... to vivo ainda... :-)

Terminei um sistema de venda/ cancelamento de venda via celular utilizando um plano de dados da operadora de celular, e achei que o software merecia um ícone pra quando o usuário fosse acessá-lo, os passos pra fazer isso é o seguinte:

1) Abra o seu projeto no Netbeans (meio óbvio...)
2) Deixe a aba "Projetos" aberta
3) Arraste a imagem para dentro do PACOTE do seu projeto, pra facilitar jogue pra dentro do mesmo pacote dos códigos fonte, o tamanho deve ser 12x12 , 15x15, vai depender do tipo de celular... e tem que ser PNG (na verdade não testei com outros formatos)
4) Clique com o botão direito sobre o projeto e selecione a opção PROPRIEDADES
5) Selecione a categoria "Descritor de aplicativos"
6) Clique no botão "Adicionar"
7) Preencha as propriedades:
Nome: MIDlet-Icon
Valor: /[nome_do_pacote]/[nome_da_imagem]

É isso aí...

Se alguém precisar e não conseguiu compreender me avisa que eu coloco as imagens.

[]'s

quarta-feira, 25 de março de 2009

Código java compilado?

Sempre pensei na facilidade de decompilação de um arquivo jar criado em java, buscando uma solução pra isso acabei encontrado o gcj que compila um código java criando um executável sem chance de ser decompilado (ou pelo menos muuuuuuito mais difícil do que o jar), veja um exemplo:

HelloWorld.java:

public class HelloWorld {
public static void main(String [] args) {
System.out.println("Teste com java compilado para codigo nativo$
}
}


Basta compilar assim (claro que o gcj tem que estar previamente instalado):
gcj --main=HelloWorld -o HelloWorld HelloWorld.java


Com isso será criado o arquivo HelloWorld com permissão de execução (no caso do Linux) e para executá-lo:
./HelloWorld

Seria interessante poder utilizar diretamente no NetBeans, pois geralmente um projeto em java não se limita a uma única classe e penso eu que se estiver dentro do NetBeans ele mesmo vai criar as condições necessárias para utilizar o gcj sem muito esforço, então encontrei a página http://wiki.netbeans.org/FaqGcj mas ainda não deu tempo de testar pra ver se realmente funciona.

T+

sexta-feira, 6 de março de 2009

Broken pipe: A SOLUÇÃO CORRETA

Não vou negar... quebrei muito a cabeça com esse problema em um sistema que recebe conexões via socket, o problema se dava quando ficava muito tempo se receber conexões, eis que acabava gerando o erro "Broken pipe"... e nada mais funcionava, a minha primeira tentativa (com sucesso) mas não muito elegante, pois poderia acarretar em outros problemas está no post:
http://netbeando.blogspot.com/2008/06/broken-pipe-conexo-com-socket-no-banco.html

Bom, agora apresento a solução mais elegante...

1) Para criar um pool de conexões com o banco, inclua no seu projeto a biblioteca c3p0 e faça a conexão dessa forma:

ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass("com.mysql.jdbc.Driver");
cpds.setJdbcUrl("jdbc:mysql://localhost:3306/nome_base_dados");
cpds.setUser("usuario_banco");
cpds.setPassword("senha_usuario_banco");
cpds.setMinPoolSize(5);
cpds.setAcquireIncrement(5);
cpds.setMaxPoolSize(20);
cpds.setIdleConnectionTestPeriod(60);
cpds.setMaxStatements(0);
cpds.setInitialPoolSize(3);
cpds.setPreferredTestQuery("select 1");
cpds.setCheckoutTimeout(1000);

con = cpds.getConnection();

Essas foram as configurações que eu utilizei para testes no meu tipo de sistema, pesquise sobre o c3p0 e veja quais serão as que se adaptam melhor ao seu problema.

2) Por último, mas não menos importante, sete a propriedade do socket (server) que recebe as conexões do cliente:

private static Socket conexao;
.
.
.
public static void main(String[] args) {
.
.
.
conexao.setKeepAlive(true);
.
.
.
}


Fazendo esses 2 itens resolveu completamente o problema.

Espero que ajude a você também...