Página 1 de 1

Criar BD no MySQL usando ADO

Enviado: 26 Jul 2016 12:05
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

Criar BD no MySQL usando ADO

Enviado: 26 Jul 2016 14:54
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?

Criar BD no MySQL usando ADO

Enviado: 26 Jul 2016 15:39
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

Criar BD no MySQL usando ADO

Enviado: 26 Jul 2016 15:53
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