[Resolvido!]Consultar String com valores int dando erro!

34 respostas
U

Olá pessoal to com um problema aki na consulta, veja a consulta

ou

e da o seguinte erro:

OBS: No banco de dados o campo e do tipo "Vachar"
vlw
abs

34 Respostas

M

se der passe o sql inteiro para dar uma olhada

valeu!

U

ta na mao!!rsrsrs

public static void Conx() throws IOException , SQLException{
       
       
           PreparedStatement ps = null;
            Connection con = null;
            try {
            Class.forName("org.postgresql.Driver");                               
            con = DriverManager.getConnection("jdbc:postgresql://localhost/BD","postgres","" );                                                              
            String sql=("SELECT  * FROM tabela" +
                    "WHERE identificacao = ?");
           
            ps = con.prepareStatement(sql);
            ps.setString(1, "000002AL");
           
           
            ResultSet rs = ps.executeQuery();
            }
            }
vlw abs
M

Cara, tenta da um describe na tabela pra ver certinho o que é este campo “identificacao”, pois se ele for um varchar a principio não daria este problema…

U

pois eh ele e VACHAR!!!
vlw

I

Parece que você está tentando inserir uma String em um campo int…

Olha a msg de erro:

U

NAO esse eo problema la no Banco e VACHAR o valor que estou passando tambem!!!

C
String sql=(SELECT  * FROM tabela +

WHERE identificacao = ?);

seu problema está no espaço:

use assim:

String sql=("SELECT  * FROM tabela " +

WHERE identificacao = ?);

não esta dando espaço entre tabela e a condição where lembrando que a string com + não quebra linha e sim continua ela
O

vaRchar?

U

to ligado!!!

U

isso mesmo!!!

I

E estes parentesis antes de depois das áspas servem para que ?

U

nao to vendo coloca um pedaço do codigo ae!!!
vlw

C

UMC qual o tipo do seu campo identificacao no postgres?

M

posta o create da tabela ae, pra gente poder testar aqui

U


UMC qual o tipo do seu campo identificacao no postgres?

Vachar

esta aki

CREATE TABLE "public"."tabela" ( "id" INTEGER DEFAULT nextval('tabela_id_seq1'::regclass) NOT NULL, "identificacao" VARCHAR(50),
vlw

I

Viajei nos parentesis

U

coloca o trecho do codigo!!!
vlw

U

pessoal fiz alguns testes aki e percebi uma coisa!!
e no meu WHILE

while (rss.next()){
				setIdt(rss.getString("identificacao"));
				
			
				System.out.println("Gerando imagem apatir da identificação:" + "'"+getIdt()+ "'");
				paint();
			}

quando eu chamo esse metodo "paint()"
ele da esse erro quando comento ele executa!!!
vlw

J

Qual e’ a solucao?

Edite seu primeiro post e coloque resolvido!

Vleu :smiley: :smiley:

U

JonathanSSantos:
Qual e’ a solucao?

Edite seu primeiro post e coloque resolvido!

Vleu :smiley: :smiley:

Ainda nao foi resolvido
eu preciso daquele metodo!!
vlw

C

Umc a parte dos parênteses é que vc passa a String para a variável sql.

U

Nunca tive problema com isso nao!!
mais eu retirei e continua!!!
vlw

V
UMC:
ta na mao!!rsrsrs
public static void Conx() throws IOException , SQLException{
       
       
           PreparedStatement ps = null;
            Connection con = null;
            try {
            Class.forName("org.postgresql.Driver");                               
            con = DriverManager.getConnection("jdbc:postgresql://localhost/BD","postgres","" );                                                              
            String sql=("SELECT  * FROM tabela" +
                    "WHERE identificacao = ?");
           
            ps = con.prepareStatement(sql);
            ps.setString(1, "000002AL");
           
           
            ResultSet rs = ps.executeQuery();
            }
            }
vlw abs

Tenta isso:

public static void Conx() throws IOException , SQLException{
       
       
           PreparedStatement ps = null;
            Connection con = null;
            try {
            Class.forName("org.postgresql.Driver");                               
            con = DriverManager.getConnection("jdbc:postgresql://localhost/BD","postgres","" );                                                              
            String sql=("SELECT  * FROM tabela" +
                    " WHERE identificacao = ?");
           
            ps = con.prepareStatement(sql);
            ps.setString(1, "000002AL");
           
           
            ResultSet rs = ps.executeQuery();
            }
            }

TENTA isso por favor

U

ja tentei vinicius.martinez mais nada!!
vlw

Z

Imprime su SQL antes de executa-lo

com JOptionPane ou System.out e coloca aqui o comando que apareceu ou tenta executa-lo no banco

U
zoren:
Imprime su SQL antes de executa-lo com JOptionPane ou System.out e coloca aqui o comando que apareceu ou tenta executa-lo no banco
Código:
setIdt(rss.getString("identificacao"));
				
				System.out.println("Gerando imagem apatir da parametro:" + "'"+getIdt()+ "'");
Console:
Gerando imagem apatir da parametro:'000002AL'
Erro org.postgresql.util.PSQLException: Valor inválido para tipo int : 000002AL
vlw abs
Z

imprime o SQL inteiro

não só o parâmetro

mas vc terá que usar concatenação

I

Imprimir o Select *…

C

System.out.println(pStatement.toString());
Chama esse método antes de dar um executeQuery(); ele vai trazer o select com os valores certo.

C

desculpe é:

U

Rsultado :

C

Roda agora no pgAdmin, para ver se o erro está no java ou no postgres.

U

sim rodou so tive quer acrescentar aspas simples assim:

vlw

U

Pessoal Muito Obrigado pela atenção de todos mais foi um erro meu so pude ver quando voltei e revi o codigo!!!
foi o sequinte
eu crie a variavel idt como String so que la embaixo eu tinha criado ela como int.
por isso o erro retirei e deu certo!!!
Mais uma vez Muito Obrigado pela atenção de todos!!!
vlw
abs

Criado 21 de dezembro de 2009
Ultima resposta 21 de dez. de 2009
Respostas 34
Participantes 9