Comando convert() mysql

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 é? :?

Existe essa coluna “bytes” na tabela paciente?

Outra coisa:

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

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

isso ao prompt do Mysql :stuck_out_tongue:

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.

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

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?

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

[code]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());

   ....

[/code]

Quanto as perguntas q vc fez todas bateram corretamente.

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.

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

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?