Guest Alessandro gomes Postado Abril 4, 2007 Denunciar Share Postado Abril 4, 2007 Como faço, em delphi(estou usando o zeos), para saber se um campo já existem em uma tabela mysql Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Abril 4, 2007 Denunciar Share Postado Abril 4, 2007 Como faço, em delphi(estou usando o zeos), para saber se um campo já existem em uma tabela mysqlAlessandro, a idéia proposta é criar uma função genérica (poderia ser colocada em uma unit de utilidades), mas que neste caso, serve apenas para uso com Zeos e MySQL (a idéia pode ser facilmente adaptada à outros).A primeira sugestão é específica para MySQL, pois faz uso de tabela de sistema do banco (há similares em outros bancos - questão de adaptação):function CheckField(Connection :TZConnection; TableName, FieldName :string) :boolean; var QryCheck :TZQuery; begin Result := False; QryCheck := TZQuery.Create(nil); QryCheck.Connection := Connection; QryCheck.SQL.Add('SELECT COLUMN_NAME'); QryCheck.SQL.Add('FROM INFORMATION_SCHEMA.COLUMNS'); QryCheck.SQL.Add('WHERE table_name = '''+TableName+''''); try QryCheck.Open; Result := QryCheck.Locate('COLUMN_NAME', FieldName, [loCaseInsensitive]); QryCheck.Close; finally QryCheck.Free; end; end; A segunda opção, mas fácil de ajustar para outros bancos, seria utilizar um TZQuery e fazer um SELECT que ao abrir a query resultará nos campos existentes na tabela. Para evitar tráfego de muitas informações na rede, poderíamos fazer uso da instrução LIMIT presente na sintax do SELECT no MySQL, já que nosso objetivo não seria a obtenção dos dados mas sim o nome dos campos. Deste modo, após o open da query você terá na propriedade Fields todos os campos constantes da tabela e poderá procurar pelo que você deseja saber se existe ou não. Ficaria assim:function CheckField(Connection :TZConnection; TableName, FieldName :string) :boolean; var QryCheck :TZQuery; begin Result := False; QryCheck := TZQuery.Create(nil); QryCheck.Connection := Connection; QryCheck.SQL.Add('select * from '+TableName+' limit 0'); try QryCheck.Open; Result := Assigned(QryCheck.FindField(FieldName)); QryCheck.Close; finally QryCheck.Free; end; end; exemplo de uso da função:... if CheckField(ZConnection1, 'usuario', 'nome') then ShowMessage('Ok') else ShowMessage('Não existe!'); ...Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Alessandro gomes
Como faço, em delphi(estou usando o zeos), para saber se um campo já existem em uma tabela mysql
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.