Comando convert() mysql

10 respostas
Leco2

Estou com um problema ao dar o comando convert(coluna, tipo).
Na verdade esse comando funciona perfeitamente quando o faço no prompt do DOS agora quando faço isso no meu programa da erro falando que não encontrou a coluna

Esse é o comando que uso tanto no DOS quanto no meu programa

String query = "Select CONVERT(Bytes, char) from paciente where ID = 8";

Esse é o erro

Erro: java.sql.SQLException: Column 'Bytes' not found.

Não sei pq ele fala que não encontra a coluna…
Se no DOS funciona deveria funcionar no meu programa não é? :?

10 Respostas

ibispo

Existe essa coluna “bytes” na tabela paciente?

Outra coisa:

Quando vc diz DOS, vc esta se referindo ao prompt do MySQL?

Leco2

existe…
então esse é o problema pq no DOS funciona perfeitamente, agora no meu programa da esse erro.

Leco2

isso ao prompt do Mysql :stuck_out_tongue:

ibispo

olha, pode parecer bobeira, mas cheque:

  • o banco q vc esta conectado no seu programa é o mesmo que vc testa no prompt do MySQL

se for, faça um outro teste, se possivel:

Esse coluna “Bytes” (bytes pode ser nome reservado para mtas coisas). Crie um outro campo na sua tabela “paciente” com o nome “QuantBytes” e preencha-o com o conteudo de “Bytes”. Tente utilizar esse novo campo ao inves do outro e veja se o erro persiste.

Eu tive uma situacao inusitada. Um “orelha-seca” criou uma tabela aqui na empresa e criou o campo “status” dentro dela. O projeto JAVA com struts rodava bem até o IE 6. Quando o cliente mudou para o IE 7 dava erro. Depois de mto sofrer descobri que o IE 7 utiliza a palavra “status” como reservada, ai. ai. ai…

Tive que mudar o nome da variavel e tudo roda perfeitamente.

Leco2

O erro ainda continua, mudei o nome da coluna para QuantBytes mas da o mesmo erro.
estranho isso…

ibispo

Vamos lá, outra coisa:

Esse BD onde tem a tabela pacientes qual é a CHARACTER_SET e o COLLATE dele? Execute no prompt do MySQL

SHOW VARIABLES LIKE 'COLLATION%'

SHOW VARIABLES LIKE 'CHARACTER%'

Verifique se os dados batem, principalmente:

character_set_database SENDO O MESMO QUE character_set_server

e

collation_database SENDO O MESMO QUE collation_server

Tive alguns problemas estranhos quando essas duas variaveis nao batiam.

Outra coisa: Essa tabela “paciente” qual o type dela: Pelos estudos que tive o ideal é que ela seja InnoDB.

Faz outra coisa: Poste aqui a estrutura da tabela “Paciente”, OK?

Leco2

ok descobrir que o erro não estava no comando... mas mas sim quando tento ler a tabela olha....

try{
    Class.forName(driver);
    Connection con;
    con = DriverManager.getConnection(url, user, password);
    stm = con.createStatement();
    String query = "Select cast(QuantBytes as char) from paciente where ID = "+id+"";
    rs = stm.executeQuery(query);

    while(rs.next()){
        
        blob = rs.getBlob("QuantBytes");   //Aqui que aparece o erro. Diz que não encontra a coluna nessa linha 
        b = blob.getBytes(1, (int) blob.length());

       ....

Quanto as perguntas q vc fez todas bateram corretamente.

ibispo

CAIU A FICHA …
Quando vc faz um select com algum campo calculado (usando funcoes, etc) vc deve colocar “AS nome do campo”

String query = "Select cast(QuantBytes as char) from paciente where ID = "+id+"";

o correto é

String query = "Select cast(QuantBytes as char) AS QuantBytes from paciente where ID = "+id+"";

O sistema não estava encontrando o campo na linha do SELECT

É isso.

Leco2

putz…cara vlw…funcionou!!
Brigado mesmo!!! :smiley:

Leco2

ok…agora estou com outro problema…qndo armazeno um byte[6000] em uma célula classificada como longblob ele armazena os dados sem problemas,
mas quando leio esses dados da tabela, alguns valores vem alterados, será que é porque tem algum número com sinal negativo?

Criado 3 de março de 2009
Ultima resposta 3 de mar. de 2009
Respostas 10
Participantes 2