Ir para conteúdo

POWERED BY:

Arquivado

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

João Paulo Taraciuk

Criar banco de dados

Recommended Posts

Olá pessoal, como eu faço para criar um banco de dados por código no Delphi, eu utilizo banco mysql3.23 e o zeos para comunicação, é somente o banco, pois as tabelas não será necessário.

Fazer pelo prompt do windows eu sei, só não sei fazer via código, pelo delphi.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta monta a instrução SQL e manda executa no Delphi.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo eu tentei fazer assim, mas dá erro

procedure TForm1.Button1Click(Sender: TObject);
var
  Qry: TQuery;
begin
Qry.Active:=False;
Qry.SQL.Clear;
Qry.SQL.Text:='create database banco';
Qry.ExecSQL();
end;
Na verdade eu não tenho idéia de como fazer para criar o banco para o MySql 3.23

Se puder dar-me uma dica, eu agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia a todos.

 

Está dando erro, porque antes de mais nada, voce tem que fazer a conexão com o driver específico do MySql 3,23 e além disso usar o componente certo que faça essa conexão.

 

Os componentes indicados para fazer essa conexão, são os componentes ZEOS, que não são nativos do Delphi. Voce tem que baixá-los e instalá-los.

 

Outra coisa a ser observada é a Sintaxe SQL que o MySql usa, esta Sintaxe varia de banco para banco. É evidente que a Sintaxe "Create DataBase NomedoBanco" está correta, porém para o MySql, creio eu que ela deva exigir mais algum outros parâmetros, por exemplo, no FireBird a sintaxe é esta: "Create Database NomedoBanco User NomedoUsuario Password Senha PageSize 1024

 

Eu não conheço o MySql, não sei também se ele cria o Banco como um arquivo físico, ou se internamente no Servidor MySql. Digo isto, para ver pelo menos se dar para fazer conexão via ODBC.

 

Quanto ao código acima, a sintaxe correta é Qry.SQL.Add("Create Database Banco"); e não Qry.SQL.Text := ......

 

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o COMANDO ESTÁ CORRETO...

 

Sintaxe:

 

 

 

CREATE DATABASE nome_do_banco;

 

 

 

Exemplo:

 

 

 

CREATE DATABASE TUTORIAL;

 

 

 

 

 

 

 

Sugiro que implemente algo ligado ao prompt de comando para rodar essa instrução....

 

Ja foi debatido recentemente aqui no fórum sobre isso...executar um comando pelo prompt atravéz do Delphi...

 

Você pode se conectar usando:

 

mysql -h localhost -u root -p

Enter password: ****

 

 

E depois executar o Create Database com o nome que quiser...

 

Abraço! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia a todos.

 

Gostaria de fazer uma pergunta ao nossa amigo Hugo Slepicka.

 

Tem como passar a senha como parâmetro no prompt de comando de conexão, ou seja, digitar o comando de conexão passando a senha como parâmetro e fazer a conexão de imediato. ???

 

Digo isto porque o Delphi tem uma função de API que executa instruções no prompt de comando do DOS, chamada WinExec

 

Quem sabe possamos ajudar o nosso amigo aqui utilizando esta função a criar o banco dentro do Delphi, assim:

 

begin	 
	 WinExec('mysql -h localhost -u root -p -password senha', sw_ShowNormal);
	 WinExec('Create Database Tutorial', sw_ShowNormal); 
  end;

Bom se a minha pergunta tiver resposta afirmativa, então é só usar o comando acima, e além disso não precisará de nenhum componente, pois esta função é uma função de API interna do Delphi.

 

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte... acho que tem como sim....

mysql -h localhost -u root -p root

 

 

Mas note que isso irá abrir 2 prompts... e apenas o primeiro estará conectado ao MySQL....

 

Sugiro que dê uma analisada nesse post:

 

http://forum.imasters.com.br/index.php...t&p=1064275

 

 

Qualquer dúvida posta aew...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, boa tarde

Bom, eu peguei as idéias sugeridas, e, para executar pelo windows eu fiz algo assim:

Eu criei o programa para exemplo dentro de uma pasta chamada programa, aí criei coloquei dentro da pasta um MySqlDump.exe e um MySql.exe para poder executar os procedimentos de Backup e Restore, então para tentar criar o banco eu fiz assim, Lembrando que eu utilizo o MySQL3.23,

Eu criei um arquivo de texto com o bloco de notas dei o nome de banco.sql e coloquei as instruções

create database tutorial;

aí no delphi eu fiz assim(aproveitando a idéia de executar elo cmd)

procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(handle,'open', 'cmd.exe',Pchar('/c c:\programa\mysql.exe< c:\programa\banco.sql'),nil, SW_SHOW );
end;
E criou o banco, agora gostaria de saber se está correto, ou se isso pode me ocasionar dor de cabeça futuramente,

E, (sem querer ser muuito abusado) gostaria de saber, como eu faria para criar este este arquivo *.sql em tempo de execução, tipo, clica no botão, ele cria o arquivo *.SQL, executa a instrução de criar o banco, e depois deleta o arquivo.sql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, antes de mais nada, obrigado aos colegas pelas dicas.

Bem, eu testei aqui e funcionou dessa maneira. Eu coloquei um Mysqldump.exe e um Mysql.exe dentro da pasta "C:\programa", que é onde está meu programa!

Primeiro para fazer o backup do banco "Tutorial" e armazenar no arquivo backup.sql

procedure TForm1.Button2Click(Sender: TObject);
begin
ShellExecute(handle,'open', 'cmd.exe',Pchar('/c c:\programa\mysqldump.exe -h 10.1.1.13 tutorial >c:\programa\backup.sql'),nil, SW_SHOW );
ShowMessage('Finalizado');
end;
Aí em outro botão ele pega o backup relizado pelo MysqlDump, cria o arquivo banco.sql, com o comando para recriar o banco "tutorial" e restaura as tabelas e os arquivos presentes no banco no momento do backup

procedure TForm1.Button1Click(Sender: TObject);
var
A : TextFile;
begin
//-----------------------CRIA O BANCO "TUTORIAL"--------------------------------
  AssignFile(A,'c:\programa\banco.sql');
  Rewrite(A);
  Writeln(A, 'create database tutorial;');
  CloseFile(A);
  ShellExecute(handle,'open', 'cmd.exe',Pchar('/c c:\programa\mysql.exe< c:\programa\banco.sql'),nil, SW_SHOW );
  Sleep(10);
//---------------------RESTAURA O BANCO----------------------------
  ShellExecute(handle,'open', 'cmd.exe',Pchar('/c c:\programa\mysql.exe tutorial < c:\programa\backup.sql'),nil, SW_SHOW );
//-----------APAGA O ARQUIVO COM O COMANDO DE CRIAR O BANCO-------------
  DeleteFile('c:\programa\banco.sql');
end;
Mais ou menos isso, se algum colega tiver alguma dica para melhorar o código, eu agradeço.

Abraço!!!

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.