Criar BD no MySQL usando ADO

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Criar BD no MySQL usando ADO

Mensagem por MSDN »

Bom dia,

Estou realizando testes com ADO para trabalhar com MySQL, uso Harbour 3.2.
Se crio o BD através do HeidiSQL, e executo a conexão via programa, tudo ocorre bem, porém, quando deleto o BD, e tento criá-lo dentro de minha aplicação, usando :

Código: Selecionar todos

oConexao:Execute("CREATE DATABASE MEUTESTE")
, ocorre erro e não cria.
Qualquer ajuda é bem vinda.

Obrigado
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Criar BD no MySQL usando ADO

Mensagem por JoséQuintas »

O usuário usado pelo aplicativo tem direitos de criar banco de dados?
Na string de conexão está deixando sem nome de banco de dados pré-definido?
Precisa mesmo criar o banco de dados pelo aplicativo? não está confundindo banco de dados com tabelas?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Criar BD no MySQL usando ADO

Mensagem por MSDN »

Boa tarde Quintas,

Sim, estou fazendo os testes como ROOT.
Para conectar com o MySQL, estou usando parte de exemplos que você postou :

Código: Selecionar todos

  oConexao := MySqlConnection(v_campo_1,3306,""',v_campo_2,v_campo_3)
	   oConexao:Open()
	   oConexao:Execute("CREATE DATABASE MYDB")
	   oConexao:Close()
Sempre acessei o MySQL usando xHarbour e Harbour, usando a LibMySQL.DLL, com o usuário ROOT e criando BD e tabelas, dessa vez estou testando o acesso via ADO para deixar o meu sistema aberto à qualquer SGBD, com menos código e mais fácil de manter.
Não estou confundindo tabela com banco...rsss, fica tranquilo, minha dúvida é só nesse ponto mesmo.
Continuo testando aqui, mas se tiver alguma sugestão, aceito !

Obrigado
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Criar BD no MySQL usando ADO

Mensagem por MSDN »

Resolvido !

Um velho ditado diz " A fome é triste "
Eu comecei a testar antes do almoço, não dava certo, fui almoçar, e agora no retorno, lendo com calma o que o Quintas falou, vi o erro, segue :

Código: Selecionar todos

function MySqlConnection( cServer, nPort, cDatabase, cUser, cPassword )

   		 local cnConnection
   		 
   		 cnConnection:= win_OleCreateObject("ADODB.Connection")

   		 cnConnection:ConnectionString := "Driver={MySQL ODBC 3.51 Driver};Server=" + cServer + ";" + "Port=" + Ltrim( Str( nPort ) ) + ;
      		";Stmt=;User ID=" + cUser + ";Password=" + cPassword + ";Collation=latin1;" + ;
      		"UseCompression;" 
   		 /*
   		 cnConnection:ConnectionString := "Driver={MySQL ODBC 3.51 Driver};Server=" + cServer + ";" + "Port=" + Ltrim( Str( nPort ) ) + ;
      		";Stmt=;Database=" + cDatabase + ";User ID=" + cUser + ";Password=" + cPassword + ";Collation=latin1;" + ;
      		"UseCompression;" 
      	 */	
   		 cnConnection:CommandTimeOut    := 120 //seconds
   		 cnConnection:ConnectionTimeOut := 120 //seconds
   		 
   		 return cnConnection
Em um exemplo do Quintas, ele colocou a conexão com o MySQL dentro de uma função, que recebe 5 parâmetros, um deles o nome do BD. Quando já existe um BD criado, ok, mas quando não existe, se usar " Database="+cDatabase+"; mesmo passando em branco o parâmetro do BD, dá erro em tempo de execução, sem, cria o BD.
Ainda falta algumas coisas, como checar se o BD já existe ou não, criar as tabelas, checar se as mesmas já existem ou não também, e por ai vai, mas com a ajuda do Quintas e "prestando atenção", tudo ok.

Abraços
Responder