Página 1 de 1

como listar tabelas de um banco de dados com a RDD

Enviado: 22 Dez 2014 00:01
por cjp
Pessoal, estou precisando listar as tabelas existentes em um banco de dados MySQL com a RDD. Como faço isso?

Sei que o comando SHOW TABLES faz isso, mas eu não sei como fazer isso de dentro de minha aplicação em Harbour. Eu preciso pegar numa variável os nomes das tabelas existentes no banco de dados.

Alguém me ajuda?

como listar tabelas de um banco de dados com a RDD

Enviado: 22 Dez 2014 15:43
por rochinha
Amiguinho,

Este comando SHOW TABLES não teria algum parametro estilo TO [arquivo] ou direcionador?

Os comandos SQL dados no console mostram tudo em tela, portanto se você usa algum RDD com certeza este comando aciona alguma função, tipo:

[variavel] = ShowTables()

Verifique.

como listar tabelas de um banco de dados com a RDD

Enviado: 22 Dez 2014 16:01
por cjp
Eu não tenho certeza, mas acho que não. Veja a sintaxe dele, de acordo com o manual (http://dev.mysql.com/doc/refman/5.0/en/show-tables.html):

Código: Selecionar todos

SHOW [FULL] TABLES [{FROM | IN} db_name]
    [LIKE 'pattern' | WHERE expr]
Como eu poderia pegar o resultado em uma variável?

como listar tabelas de um banco de dados com a RDD

Enviado: 22 Dez 2014 16:45
por rochinha
Amiguinho,

Deixe entender como voce está usando o MySQL e seu sistema. Você usa algum RDD? Este RDD não dá suporte a tal função?

Se está usando seu sistema no modo console, com certeza voce poderia montar uma função para fazer esta captura usando o velho direcionador do MS-DOS para um arquivo TeXTo e recuperá-lo via MemoRead()

Exemplo:

Código: Selecionar todos

...
C:\mysql\bin\mysql ...comando... > result.txt
...

como listar tabelas de um banco de dados com a RDD

Enviado: 22 Dez 2014 17:11
por JoséQuintas
Show tables retorna um recordset onde cada tabela é um registro.
Tudo depende de como está acessando o MySql, pra saber o formato de retorno.
No ADO:

Código: Selecionar todos

oRs := cnMySql:Execute( "SHOW TABLES" )
DO WHILE .NOT. oRs:Eof()
   ? oRs:Fields(0):Value
   oRs:MoveNext()
ENDDO
oRs:Close()

como listar tabelas de um banco de dados com a RDD

Enviado: 22 Dez 2014 17:14
por cjp
Eu uso em modo console mesmo.

Estou usando com a RDD, algo assim:

Código: Selecionar todos

DBUSEAREA( .T.,, "SELECT * FROM ativ WHERE usuario='"+us+"'", "recebftp")
Ou assim:

Código: Selecionar todos

cQuery:="INSERT INTO onus values (nronus,'"+us+"','"+alltrim(str(year(date())))+"-"+substr(dtoc(date()),4,2)+"-"+substr(dtoc(date()),1,2)+"',20,'N')"
RDDINFO(1003, cQuery)
Então, tentei fazer assim:

Código: Selecionar todos

cQuery:="SHOW TABLES"
a=RDDINFO(1003, cQuery)
Mas assim eu não consigo pegar o resultado. Tá dando a="SHOW TABLES".

como listar tabelas de um banco de dados com a RDD

Enviado: 22 Dez 2014 17:23
por Toledo
cjp escreveu:Então, tentei fazer assim:
cQuery:="SHOW TABLES"
a=RDDINFO(1003, cQuery)
O correto é "SHOW TABLES FROM NomedoBancodeDados", mas o RDDINFO() não tem suporte para este tipo de Query.

Já o ADODB tem suporte para esta função, mas ai você teria que mudar completamente todos os comandos de conexão com o banco de dados, tudo que você usar com o RDDINFO() não será aproveitado.

Abraços,

como listar tabelas de um banco de dados com a RDD

Enviado: 22 Dez 2014 23:59
por cjp
Então não tem jeito. Paciência.

Obrigado a todos.

como listar tabelas de um banco de dados com a RDD

Enviado: 24 Dez 2014 09:36
por alxsts
Olá!

Não conheço nada de RDDINFO pois nunca a utilizei. ADO é uma tecnologia já superada no mundo Microsoft mas é excelente. O Harbour oferece suporte nativo a ADO,através da lib HbWin. Além disso, existem milhares de exemplos disponíveis.

Não vejo razão para você desistir assim, tão facilmente. Tudo bem que o teu sistema está usando RDDINFO. Você pode mesclar ADO com RDDINFO.

No caso da tua necessidade atual, bastaria uma função simples que conectasse no banco desejado, através de ADO, e retornasse um array com os nomes das tabelas deste banco.

como listar tabelas de um banco de dados com a RDD

Enviado: 24 Dez 2014 10:46
por cjp
O problema é que eu não sei nada de ADO. Teria que ter um tutorial ensinando a instalar e usar, como o Toledo fez para a RDD.

Neste caso, como eu quero apenas listar as tabelas de backup, para eventualmente apagá-las, eu vou me virando apagando manualmente.