Jump to content
Fivewin Brasil

Conexão com Bd - Resolvido


Valdir

Recommended Posts

Valdir,

quando começo a aprender algo novo, vou de pouco em pouco, funcionando o "Olá Mundo!" eu passo adiante.

Então minha proposta, pegue o código que passei antes, que repito aqui, crie um programinha só com ele, sem nada mais, só o básico. Tem que funcionar. Funcionando, então vai colocando mais funcionalidades, se der erro, vai saber onde foi .

Estou fazendo assim no meu estudo para implementação do sql. Passo a passo.

Então segue o código:

#include "tdolphin.ch"
#define CRLF Chr( 13 ) + Chr( 10 )

PROCEDURE Main()
  


   LOCAL oServer   := NIL
   LOCAL cText := ""
   local cCmdSql ,  oQry 
   
   

   IF ( oServer := ConnectTo() ) == NIL
      msgAlert("Erro de conexão")
      
      return nil
      
   ENDIF

   IF ! oServer:lError 
      cText += oServer:GetServerInfo() + CRLF 
      cText += oServer:GetClientInfo()

      msginfo(cText,"Server Info")

   ENDIF
   
   oServer:End()


RETURN

//----------------------------------------------------------

FUNCTION ConnectTo(  )

   LOCAL hIni      
   LOCAL oServer   
   LOCAL cServer, cUser, cPassword, nPort, cDBName,nFlags    
   LOCAL oErr
   LOCAL cText := ""
   oServer   := NIL
   
     cServer   := "stt.com.br"	
   cUser     := "stf_zero"	
   cPassword := "dxxxxxxj0"	
   nPort     := "3306"	
   cDBName   := "stf_cpw4"	
     nFlags    := "0"	
   
      
   TRY
      CONNECT oServer HOST cServer ;
                      USER cUser ;
                      PASSWORD cPassword ;
                      PORT nPort ;
                      FLAGS nFlags;
                      DATABASE cDBName
                                
   CATCH oErr 
     MsgInfo( oErr:Description )
     RETURN NIL
   END
   
      IF ! oServer:lError 
         cText += "Connection OK" + CRLF
         cText += "Host: " + oServer:cHost +CRLF
         cText += "Database: " +oServer:cDBName + CRLF
         cText += oServer:GetServerInfo() + CRLF 
         cText += oServer:GetClientInfo()
   
         msginfo( cText ,"Dados da conexão ")
   
      ENDIF

RETURN oServer

//======================================

[]´s

Link to comment
Share on other sites

Amigos...

Jorge, infelizmente não funfou. Mesmo assim Obrigado pelo Dica.

Rogério... já havia feito um exemplo simples seguindo a sua orientação. Refiz agora para confirmar se não estava fazendo nada errado, porém infelizmente também não deu certo.

Acredito que esteja faltando alguma lib nas minhas diretivas de compilação.

Poderiam me fazer o grande favor de verificar isso, pois estou achando que é este o problema.

Quando compilo qualquer exemplo, não aparece nenhuma mensagem de erro e o exemplo aborta..

Obrigado.

Link to comment
Share on other sites

Olá Valdir como vai!

Hoje que estou vendo o seu post. Sabe que cheguei a montar um tempo atrás um exemplo completo com a TDolphin para você, mas não tive como enviá-lo, nem me lembro mais como fiz, mas tenho ele aqui.

Estou de passagem aqui no momento, mas e quanto ao mysql, pode estar faltando algum detalhe, a senha esta correta, onde esta o seu mysql numa máquina local acredito, pois no seu .ini esta localhost. Falo isso porque ao instalar tem uma solicitação de flegar sobre conexão via ip e que deve ser flegada ou não acessa, mas local funcionaria.

Tente usar em vez de localhost assim:

[mysql]
// Endereço de IP
host = 127.0.0.1
user = root
port = 3306

Você criou no mysql o banco e tabelas? são perguntas bobas, mas pode ser por ai rsss....apanhei muito também.

Estou a disposição, se estiver interessado darei uma olhada no exemplo que te falei e te passo para tentar compilar ai.

Abaixo um exemplo do que utilizo atualmente, parte de um Main() e uma classe que criei para configurações:

Function Main()  // Menu Principal
    local nEntry := 0 
    local oBar,oIco,oHand
	 local oSfa,cRede:=""
	 Private oConn,oServer
	 PUBLIC oWnd,oGbs 

	 //-> Instancia Classe TGbSilva()
	 oGbs := TGbsilva()
	 //-> Instancia objeto e iguala atributos antes de verificar versão do sistema
    oSfa := TGbConfig():new()
	 oSfa:versao      := "1.1.0"    //-> Versão
    oSfa:ini_file    := "gb_connect.ini"  //-> Nome do arquivo .ini
  	 oSfa:sistema     := "Sistema de Atendimento - Facilidades (SISAF)"
	 oSfa:ini_set     := "mysql"
	 ********************************************************************************************
	 * Definição do Banco de Dados e senha de acesso
	 ********************************************************************************************
	 oSfa:ini_dbname := "Sagre"   //-> Database mysql
    oSfa:password   := "123"    //-> Senha 
	 ********************************************************************************************
	 //-> Chama arquivo .ini 
	 oSfa:SetIni()
	 //-> Verifica se o Sistema já esta sendo executado
	 IF !oSfa:SisExec("Sisaf.exe")
       BringWindowToTop( oWnd )
       return(nil)
	 ENDIF
	 //-> Configurações gerais do Sistema
	 oSfa:Set()
    //-> Chama método para conectar ao banco de dados
	 IF ( oServer := oSfa:Connect() ) == NIL
	      BringWindowToTop( oWnd )
		   return(nil)
	 ENDIF
	 //-> Chama módulo de acesso ao sistema (acesso.prg)
	 IF !Login(@nEntry) 
       BringWindowToTop( oWnd )
		 return(.f.)
    ENDIF
	 //-> Trata retorno do Login()
	 IF nEntry = 1
       BringWindowToTop( oWnd )
       return(.f.)
    ENDIF
    ....
    ....
    ....
#include "FiveWin.ch"
#include "xbrowse.ch"
#include "tsbutton.ch"
#include "config.ch"


#ifdef rdd_tdolphin
	 #include "tdolphin.ch" //-> usando Tdolphin
#else
    #Include "sqllib.Ch"  //-> usando sqllib
#endif

************************************************************************************************************************
CLASS TGbConfig FROM TGbSoftware 
  DATA sistema,versao,lReturn,CLR_GetFocus
  DATA apDados,aImagens
  DATA ini_dbname,ini_empresa,ini_host,ini_user,ini_porta,ini_file,ini_reshor,ini_resver,ini_exe,password
  DATA ini_rede,ini_endclasse,ini_set,ini_endesp
  DATA id_imagem,nome,filec
  
  
  METHOD New() CONSTRUCTOR
  METHOD SisExec(_cSistema)
  METHOD SisVersao()
  METHOD Set()
  METHOD SetIni()
  METHOD Connect()
  
ENDCLASS

METHOD New() CLASS TGbConfig
  super:New()
  ::sistema       := "Nome do Sistema"
  ::versao        := "" 
  ::lReturn       := .f.
  ::apDados       := {}
  ::aImagens      := {}
  ::CLR_GetFocus  := NRGB(255,208,047)  // RGB(235,255,145)
  
  ::ini_set       := "mysql"  //-> nome da variável do arquivo .ini
  ::ini_dbname    := ""
  ::ini_file      := ""
  ::ini_empresa   := ""
  ::ini_host      := "127.0.0.1"
  ::ini_user      := "root"
  ::ini_porta     := 3306
  ::ini_exe       := ""
  ::ini_reshor    := 1024
  ::ini_resver    := 768
  ::password      := "123"
  ::ini_rede      := ""
  ::ini_endclasse := ""
  ::ini_endesp    := ""
  ::id_imagem     := space(2)
  ::nome          := space(20)
  ::filec         := space(20)

return self

METHOD SisVersao() CLASS TGbConfig
  local cSql,aVersao[1],lVersao:=space(10)
  local oQry
  
  cSql := "SELECT versao" +;
          " FROM cadastro.versao"  +;
			 " WHERE sistema='"+oGbs:id_sistema+"' AND status='1' LIMIT 1 ;"
  #ifdef rdd_tdolphin
			oQry := oServer:Query(cSql)
			lVersao := oQry:FieldGet(1)
			oQry:End()
  #else
			aVersao := SqlArray(cSql)
			lVersao := aVersao[1,1]
  #endif
  if ::versao <> alltrim(lVersao)
  	  If !MsgYesNo("Existe uma nova versão, Deseja atualizar o Sistema (S/N) ?","Atualização do Sistema",2)
	     ::lReturn := .f.
	  Else
	     ::lReturn := .t.
	  Endif  
	  return(.f.) 
  endif
return(.t.)  

//-> Verifica se o sistema já esta sendo executado
METHOD SisExec(_cSistema) CLASS TGbConfig
  if (IsExeRunning(_cSistema) )
     MsgStop("Sistema "+STRTOKEN(_cSistema,1,".") +" já esta sendo executado","Atenção!!!")
	  return(.f.)
  endIf
return(.t.)

METHOD Set() CLASS TGbConfig
    //-> Configuração Para Todo o Sistema
    SET 3DLOOK ON
    SET CENTURY ON                // 4 DIGITOS PARA O ANO
    SET CONFIRM OFF               // (mudei, eu) CURSOR NÃO PODE DESLOCAR-SE AUTOMATICAMENTE
    SET CURSOR ON                 //-SetCursor( if(Upper("ON") == "ON", 1, 0) )
    SET DATE BRITISH              // FORMATO DD/MM/AAAA
    SET DATE FORMAT "dd/mm/yyyy"  // IGUAL AO ANTERIOR, APENAS REFOR€O.
    SET DELETED ON                // ON IMPEDIR VER REGISTROS MARCADOS PARA APAGAR
    SET DECIMALS TO 2
    SET EPOCH TO (Year(Date())-50)// PARA IMPEDIR QUE O ANO SEJA 00
    SET ESCAPE ON                 // TECLA ESC LIGADA, POSSO ESCAPAR.
    SET EXCLUSIVE OFF             // REDE NETUSE LIGADA
    //NOTA: As Funcoes OrdKeyCount() e OrdKeyNo() Nao Trabalham se OPTIMIZE
    //Esta em OFF, ou se uma variavel de filtro e um elemento de matriz.
    SET MULTIPLE ON               // PARA QUE SE POSSA ACIONAR QUANTAS JANELAS QUISER
    SET OPTIMIZE ON               // OPTIMIZAR OS FILTROS(DBSETFILTER)
    SET SOFTSEEK OFF              // OBRIGATÓRIO "OFF" PARA USO COM MYSQL
    SET UNIQUE OFF                // PERMITIR OU NÇO CHAVES COM DUPLICIDADE
    SET WRAP ON                   //-Set( 35, "ON" ) // PARA MENUS
    SETCANCEL( .F. )              // INUTILIZA ALT + C PARA ABORTAR PROGRAMA

    #ifdef rdd_sqllib
	    SET CUSTOM INDEXES ON         // ATIVA O USO DE ÍNDICES CUSTOMIZADOS (COM FUNÇÃO)
    #endif
    
    REQUEST DBFCDX                // CHAMADA AO BANCO DBFCDX OU _DBFCDX
    REQUEST HB_CODEPAGE_PT850
    REQUEST HB_LANG_PT
    HB_SETCODEPAGE("PT850")
    HB_LANGSELECT("PT")
    RDDSETDEFAULT( "DBFCDX" )     // CARREGA RDD DEFINIDO NO CASO, *.CDX
    DBSETDRIVER( "DBFCDX" )       // CARREGA RDD DEFINIDO NO CASO, *.CDX

    //SetGetColorFocus( RGB(235,255,145) )
    SetGetColorFocus( ::CLR_GetFocus )
return(.t.)

METHOD Connect(n) CLASS TGbConfig
   local c 
   local hIni      
   local oServer,nFlags
	local oErr
	   
   c = "mysql"
   if n != NIL 
      c = "mysql" + AllTrim( Str( n ) )
   endif
   
	#ifdef rdd_sqllib
		
		SQL CONNECT ON ::ini_host ;
      PORT ::ini_porta ;
      DATABASE ::ini_dbname ;
      USER ::ini_user ;
      PASSWORD ::password ;
      OPTIONS SQL_NO_WARNING ;
      LIB "MySQL"
      
		IF SQL_ERRORNO() > 0
         Alert("Não foi possível conectar ao banco de dados !"+CRLF+;
               "Informe esta mensagem ao suporte: "+CRLF+;
         SQL_ErrorMsg())
         return(.f.)
      ENDIF
      RddSetDefault("MySQL")
      return(.t.)
   #else
	oServer := NIL
	nFlags  := 0
	TRY
       CONNECT oServer HOST ::ini_host ;
                       USER ::ini_user ;
                       PASSWORD ::password ;
                       PORT ::ini_porta ;
                       FLAGS nFlags;
                       DATABASE ::ini_dbname
                               
      CATCH oErr 
   	  ? hb_dumpvar( oErr )
        RETURN NIL
      END
		RETURN oServer
	#endif
return(.f.)

METHOD SetIni() CLASS TGbConfig
   local c,oWnd,hIni
   
   c = ::ini_set //-> variável do arquivo .ini
   
	#ifdef rdd_sqllib  //-> somente usado método com sqllib
		INI hIni FILE ".\"+::ini_file
  		    GET ::ini_host      SECTION c ENTRY "host"       OF hIni 
	       GET ::ini_user      SECTION c ENTRY "user"       OF hIni 
	       GET ::ini_porta     SECTION c ENTRY "port"       OF hIni 
	   ENDINI
	#else
		//-> chama o arquivo .ini
		hIni := HB_ReadIni( ::ini_file )
      //-> atribui valores do ini
		::ini_host      := hIni[ c ]["host"]
      ::ini_user      := hIni[ c ]["user"]
      ::ini_porta     := val(hIni[ c ]["port"])
	#endif
return nil

************************************ FINAL DA TGBCONFIG ****************************************************************
Link to comment
Share on other sites

Olá pessoal...

Bom dia.

Depois de 4 dias de cama por causa de uma forte gripe, estou retomando o meu calvário.

Amigo Geraldo:

- Obrigado , porém também não conectou através da TDolphin IP 127.0.0.1

Demais amigos:

- Tenho que fazer alguma configuração específica durante a instalação do Maria Db ?

Imagino que seja esse o problema, pois compilando o exemplo simples que o amigo Rogério me enviou, não consigo realizar a conexão.

Obrigado.

Link to comment
Share on other sites

Amigos...

Agradeço de coração a todos que se dispuseram a ajudar a solucionar o meu problema sem pedir nada em troca, isso sempre foi a máxima desta maravilhosa família, por tanto, recebam o meu "Muito Obrigado".

Agora gostaria de oferecer um "Muito Obrigado Especial" aos amigos Rogério Ferreira e Gilmer pela grande ajuda e paciência que me concederam.

- Vocês são os caras.... Brigadão.

O problema estava relacionado com a falta da psapi.lib na Compilação e a minha Libmysql.dll estava incorreta.

Foi só corrigir esses dois pequenos problemas com a ajuda dos amigos que funcionou perfeitamente.

Mais uma vez.

Obrigado à todos.

Abração.

Link to comment
Share on other sites

Amigos...

Agradeço de coração a todos que se dispuseram a ajudar a solucionar o meu problema sem pedir nada em troca, isso sempre foi a máxima desta maravilhosa família, por tanto, recebam o meu "Muito Obrigado".

Agora gostaria de oferecer um "Muito Obrigado Especial" aos amigos Rogério Ferreira e Gilmer pela grande ajuda e paciência que me concederam.

- Vocês são os caras.... Brigadão.

O problema estava relacionado com a falta da psapi.lib na Compilação e a minha Libmysql.dll estava incorreta.

Foi só corrigir esses dois pequenos problemas com a ajuda dos amigos que funcionou perfeitamente.

Mais uma vez.

Obrigado à todos.

Abração.

Vc merece uns cascudos. ahuahauhauua, sabe o que é isso? É coisa de turrão, ahuahauhua, são aqueles momentos nossos que o problema está ali, escancarado na nossa cara e a gente passa batido milhões de vezes sem detectar. Fico feliz que conseguiu e com certeza deve evoluir de forma astronômica. Mas veja que em respostas acima na minha lista tinha a lib que vc precisava.

Troca esse peixe da foto pelo peixe campeão do paulistão 2016 (Santos sempre Santos) ahuahuahuaua.

LIBS

[W:\BCC582\Lib\PSDK\psapi.lib]

[W:\SERV\FUNCOES\LIBS\SQLRDD\Lib\libmysql.lib]

[]s,

Link to comment
Share on other sites

  • 5 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...