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
sexta-feira, 16 de outubro de 2009
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
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."
"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+
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
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+
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...
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...
Assinar:
Postagens (Atom)