Fórum DBExpress, MySQL (Create Database) #158153
06/05/2003
0
Estou desenvolvendo uma aplicação e nela mesma coloquei a opção de o usuário criar o banco de dados.
Ele tem de entrar com IP do servidor, Login Senha e o nome da base de dados.
E é exatamente ai q está o problema. no meu código de criação do banco de dados (DDL) eu quero colocar também antes de ele criar as tabelas um comando ´Create Database MinhaBase´. só que eu naum concegui fazer isso porque na conexão do meu DBExpress eu tenho q colocar o nome da base de dados q eu quero acessar, e como que eu vou colocar o nome dela se eu ainda naum a criei?
Já tentei também colocar como base de dados akela default do MySQL a ´mysql´, mas assim não funciona o comando create.
Alguem Sabe como eu posso fazer uma conexão desse tipo para criar a minha base de dados? algum tipo de conexão low level API.
Sei lá alguma coisa .. :)
Sousa_thiago
Curtir tópico
+ 0Posts
06/05/2003
Sousa_thiago
Gostei + 0
07/05/2003
Sousa_thiago
Poxa ninguem sabe um jeito de fazer isso naum ?
Gostei + 0
08/05/2003
Sousa_thiago
Gostei + 0
09/05/2003
Robertosistemas
procedure CriaBanco(ConName, pUsuario, pSenha: String);
begin
Database := TSQLConnection.Create(nil);
// configura DataBase
DataBase.ConnectionName := ConName;
DataBase.DriverName := ´MYSQL´;
DataBase.GetDriverFunc := ´getSQLDriverMYSQL´;
DataBase.KeepConnection := True;
DataBase.LibraryName := ´dbexpmy4.dll´; // ou a versão adequada ao seu banco
DataBase.LoadParamsOnConnect := false;
DataBase.LoginPrompt := False;
DataBase.TableScope := ([tsTable] + [tsView]);
DataBase.Tag := 0;
DataBase.VendorLib := ´LIBMYSQL.dll´;
DataBase.Params.Clear;
DataBase.Params.Add(´DriverName=MYSQL´);
DataBase.Params.Add(´BlobSize=-1´);
DataBase.Params.Add(´Database=nomedobanco´);
DataBase.Params.Add(´ErrorResourceFile=´);
DataBase.Params.Add(´HostName=nome do host ou ip´);
DataBase.Params.Add(´LocaleCode=0000´);
DataBase.Params.Add(´Password=´+ pSenha);
DataBase.Params.Add(´User_Name=´ + pUsuario´);
try
DataBase.Connected := true;
except
try
DataBase.Connected := False;
DataBase.Params.Clear;
DataBase.Params.Add(´DriverName=MYSQL´);
DataBase.Params.Add(´BlobSize=-1´);
DataBase.Params.Add(´Database=mysql´);
DataBase.Params.Add(´ErrorResourceFile=´);
DataBase.Params.Add(´HostName=nome do host ou ip´);
DataBase.Params.Add(´LocaleCode=0000´);
DataBase.Params.Add(´Password=´);
DataBase.Params.Add(´User_Name=root´);
DataBase.Connected := true;
DataBase.ExecuteDirect(´CREATE DATABASE nomedobanco´);
DataBase.ExecuteDirect(´GRANT ALL PRIVILEGES ON *.* TO root@localhost WITH GRANT OPTION´);
DataBase.ExecuteDirect(´FLUSH PRIVILEGES´);
DataBase.ExecuteDirect(´GRANT ALL PRIVILEGES ON *.* TO root@´¬´ WITH GRANT OPTION´);
DataBase.ExecuteDirect(´FLUSH PRIVILEGES´);
DataBase.ExecuteDirect(´GRANT ALL PRIVILEGES ON *.* TO ´´@localhost WITH GRANT OPTION´);
DataBase.ExecuteDirect(´FLUSH PRIVILEGES´);
DataBase.ExecuteDirect(´GRANT ALL PRIVILEGES ON *.* TO ´´@´¬´ WITH GRANT OPTION´);
DataBase.ExecuteDirect(´FLUSH PRIVILEGES´);
if lengthpUsuario) <> 0 then
begin
if length(pSenha) <> 0 then
begin
DataBase.ExecuteDirect(´GRANT ALL PRIVILEGES ON *.* TO ´ + pUsuario + ´@localhost IDENTIFIED BY ´ + QuotedStr(pSenha) + ´ WITH GRANT OPTION´);
DataBase.ExecuteDirect(´FLUSH PRIVILEGES´);
DataBase.ExecuteDirect(´GRANT ALL PRIVILEGES ON *.* TO ´ + pUsuario + ´@´¬´ IDENTIFIED BY ´ + QuotedStr(pSenha) + ´ WITH GRANT OPTION´);
DataBase.ExecuteDirect(´FLUSH PRIVILEGES´);
end
else
begin
DataBase.ExecuteDirect(´GRANT ALL PRIVILEGES ON *.* TO ´ + pUsuario + ´@localhost WITH GRANT OPTION´);
DataBase.ExecuteDirect(´FLUSH PRIVILEGES´);
DataBase.ExecuteDirect(´GRANT ALL PRIVILEGES ON *.* TO ´ + pUsuario + ´@´¬´ WITH GRANT OPTION´);
DataBase.ExecuteDirect(´FLUSH PRIVILEGES´);
end;
end;
DataBase.Connected := False;
DataBase.Params.Clear;
DataBase.Params.Add(´DriverName=MYSQL´);
DataBase.Params.Add(´BlobSize=-1´);
DataBase.Params.Add(´Database=nomedobanco´);
DataBase.Params.Add(´ErrorResourceFile=´);
DataBase.Params.Add(´HostName=nome do host ou ip´);
DataBase.Params.Add(´LocaleCode=0000´);
DataBase.Params.Add(´Password=´+pSenha);
DataBase.Params.Add(´User_Name=´+pUsuario);
DataBase.Connected := true;
except
on e:exception do
showmessage(´Rotina ´CriaBanco´: ´+ConName+´->´+e.Message);
end;
end;
end;
Gostei + 0
10/05/2003
Sousa_thiago
eu não sabia dakele tal de DataBase.ExecuteDirect(´CREATE DATABASE nomedobanco´);
Foi isso que faltou na minha rotina ...
Gostei + 0
13/05/2003
Alceste
Claro vc não lé o HELP copia dica po .
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)