Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

PauloPHP

Gravando dados em C no Banco Mysql

Recommended Posts

Boa tarde, pessoal.

 

Estou com um problema e gostaria de saber se alguem de vocês ja passou por essa situação.

 

Tenho um Software que faz alterações no banco e grava LOG de tudo. Quando da erro eu recupero o codigo do erro e o que é, pela funcao:

 

printf("Erro %d : %s\n", mysql_errno(&conexao), mysql_error(&conexao));

Estou inserindo no banco:

 

sprintf(strQuery,"insert into tbTeste(campo1,capo2) values ('%s','%s')",campo1,campo2);

Problema:

 

O erro retornado pelo mysql_error(&conexao)), vem as vezes com alguma parte da string destacada por ' '.

Ex:

error found 'banco.tabela'

 

o que acontece:

 

Esses ' ' atrapalham na hora de executar o comando mysql.

 

Retorna o seguinte erro de sintaxe:

 

Erro 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'bancoteste.tabela' doesn't exist')' at line 1

O ideal seria retirar esses ' ' da string e de erro e gravar.

 

Alguem conhece alguma outra forma de se gravar essa string?

 

Fico no aguardo.

 

Obrigado pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então não tem como eu formatar a string para adicionar ao banco pois vai acusar erro de sintaxe no INSERT do mysql.

 

Eu vou ter que percorrer a string e tirar esses ´´´.

 

Me passaram uma funcao do Mysql que achei muito interessante.

 

mysql_real_escape_string

 

Vou testar!

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caríssimo,

 

Eu fiz aqui um rascunho mais ou menos do que você falou.

Ele retira as aspas simples da string...

Veja:

 

#include <cstdlib>
#include <iostream>
#include <string.h>

using namespace std;
char *retira_aspas(char *string);

int main(int argc, char *argv[])
{
    char string[] = ">> 'Linux the' best'..";
    printf("%s\n",string);
    printf("%s\n",retira_aspas(string));
    system("PAUSE");
    return EXIT_SUCCESS;
}

char *retira_aspas(char *string)
{
     int i;
     int tam_new_string=0;
     char *new_string;
     
     new_string=(char *)malloc(0);
     
     for(i=0;i<strlen(string);i++)
     {
         if((int)string[i]!=39) // Se for diferente de aspas ASCII da aspa simples = 39
         {
             tam_new_string++; // Incrementa o tamanho da nova string
             new_string=(char *)realloc(new_string,tam_new_string*(sizeof(char))); // Realoca um novo espaco pra nova string
             new_string[tam_new_string-1]=string[i]; // Insere o dado nesse novo espaco
         }
     }
     tam_new_string++; // Incrementa o tamanho da nova string
     new_string=(char *)realloc(new_string,tam_new_string*(sizeof(char))); // Realoca um novo espaco pra nova string
     new_string[tam_new_string-1]='\0'; // Coloca o '\0' na string pra indicar o final da string
     return new_string;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.