postgreSQL enjoado!  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
felipe_thrash
JavaGuru
[Avatar]

Membro desde: 02/07/2007 13:36:02
Mensagens: 240
Localização: Brasil
Offline

pessoal,

no mySQL... quando dou um insert, e um update é assim:


que tratando em java fica assim né:



pq no PostgreSQL, ele tem a frescura de no update, ele querer aspas ??



e como trato isso na PreparedStatement ?
alguem já passou por isso ?

valew

Need money for a f*%#ing beer!
celso.martins
Virtual Machine Man
[Avatar]

Membro desde: 19/06/2006 13:54:23
Mensagens: 699
Localização: Rio de Janeiro
Offline

Amigo, você só precisa de aspas simples se o seu campo for Varchar e Data (Timestamps, Dates, etc). Aspas duplas se o nome do campo tiver letras maiúsculas.

O resto não precisa não.

Para você passar o valor para um parâmetro String (?), basta usar o setString do stmt.

Trabalho com PostgreSQL há quase 4 anos e sempre funcionou dessa forma que to te passando.

Abraços!


Hoje melhor que ontem e pior que amanhã.

Desenvolvimento Psicopata - Qualidade Total
Twitter
Infoblogs - A vitrine do seu blog
[Email] [WWW]
pedro.braz
Entusiasta Java

Membro desde: 04/09/2007 19:58:09
Mensagens: 20
Localização: Penápolis SP
Offline

try{
String sql = "update pessoa set nome=?, endereco=? ";
sql += " where id=?";
Connection conn = ConnectionDB.getConnection();
pStmt = conn.prepareStatement(sql);
pStmt.setString(1, pessoa.getNome());
pStmt.setString(2, pessoa.getEndereco());
pStmt.setInt(3,pessoa.getId());
pStmt.execute();
}

funciona numa boa.
felipe_thrash
JavaGuru
[Avatar]

Membro desde: 02/07/2007 13:36:02
Mensagens: 240
Localização: Brasil
Offline

meus campos no BD são "character"

parece q é esse tipo de campo... por ai

e o engraçado é que..
rodando a query normal...

retorna 0 linha afetada...

e com aspas simples
retorna 1 linha afetada!


mas como trato no código ??
a solução acima não funcionou tb não

ou simplesmente troco os tipos de campo ?


Need money for a f*%#ing beer!
cassio
GUJ Master
[Avatar]

Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline

Não é o postgresql que é enjoado, você que não está prestnado atenção...



Sem aspas o seu 01 vira 1 pois ele interpreta como integer e não como caractere. Neste caso, zero à esquerda é descartado. Por isso que neste exemplo que vc passou vc é obrigado a colocar aspas simples:


Cássio Marques

Blog
felipe_thrash
JavaGuru
[Avatar]

Membro desde: 02/07/2007 13:36:02
Mensagens: 240
Localização: Brasil
Offline

vc é obrigado a colocar aspas simples:



e como trato isso no prepareStatement ??



perdoem minha ignorância...

Need money for a f*%#ing beer!
raci0nal
JavaChild
[Avatar]

Membro desde: 09/01/2007 12:53:24
Mensagens: 147
Offline

Não precisa tratar.
Você só precisa saber qual o tipo do campo lá no BD.
Se for inteiro, use:

Se for string, use:

Acho que a confusão está acontecendo pois você está esperando que este campo seja inteiro, quando na verdade ele está como string lá no Postgre, por isso a necessidade das ''.

Abraços,
Marcos Antonio Campos Jordão''
[MSN]
felipe_thrash
JavaGuru
[Avatar]

Membro desde: 02/07/2007 13:36:02
Mensagens: 240
Localização: Brasil
Offline

então... estou usando setString sim....

mas olha só... meu ID... vou usar tanto nº quanto letras...
tipo um ID = AA014
e estou usando character no banco, e string no código... em TOdos so campos....

quero saber se tem como reformular essa query dentro do código... ???

valew!




Need money for a f*%#ing beer!
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team