Jump to content
Fivewin Brasil

mysql dois banco


Luiz Fernando

Recommended Posts

Colegas estou com uma situação aqui aonde preciso gravar dados em um outro banco de dados, isto ira ocorrer num unico modulo, qual a forma mais correta de fazer isto, tipo terei que fechar um banco, abrir o outro gravar os dados, fechar este e abrir novamente o principal, ou tem como trabalhar durante o projeto com os dois banco de dados.

Obrigado

Link to comment
Share on other sites


Luiz, se for sqllib é simples,


SQL CONNECT ON alltrim( chost_principal ) PORT 3306 DATABASE db USER user PASSWORD pwd LIB "MySQL"

nConn1:= SQLGetConnection()




SQL CONNECT ON alltrim( chost_principal ) PORT 3306 DATABASE db2 USER user2 PASSWORD pwd2 LIB "MySQL"

nConn2:= SQLGetConnection()



sqlsetconnection(nConn1)

cPesq_Sql:= "SELECT * FROM grupro WHERE grupro.DTALTERA >="+STR_SQL ( ddtinicio )+" order by grupro.CODGRU"

use grupro as cPesq_Sql alias grupro new via 'mysql'


sqlsetconnection(nConn2)

while ! grupro->(eof())

gravar_na_nconn2()

end


Daniel Segura

Link to comment
Share on other sites

Daniel veja a situação

aqui no inicio do sistema

  SqlLib_Conn( AllTrim(Lower(nServidor)),Val(nPorta),Lower(AllTrim(nDatabase)),Lower(AllTrim(nUsuario)),Lower(AllTrim(nSenha)),SQL_NO_WARNING,"MySql")
  if SQL_Errorno() > 0
     alerta3(,'Não foi possivel estabelecer',' a Conexão...')
     return .f.
  else
     alerta1(,'Conexão estabelecida com sucesso...')
     return .t.
  endif   
  
  aDBs:= sqlArray("Show Databases")
  if ASCAN(aDBs,{|X|X[1]=nDatabase})>0
     SQL EXECUTE "use "+nDatabase   
  else
     SQL EXECUTE "create database "+nDatabase 
     SQL EXECUTE "use "+nDatabase   
  endif

numa unica situação dentro do sistema, preciso ao dar um INSERT ou UPDATE , gravar os dados elem da base que esta em uso, em mais uma base externa.

exemplo do INSERT

SQLBeginTrans()
cSql:="INSERT INTO os( pedido,cliente,data,hora,contato,status"+")" 
cSql+="VALUES( "+any2sql(aOs[D_PEDIDO])+" , "+any2sql(aOs[D_CLIENTE])+" ,"
cSql+=" "+any2sql(aOs[D_DATA])+" , "+any2sql(aOs[D_HORA])+" ,"   
cSql+=" "+any2sql(aOs[D_CONTATO])+" , "+any2sql(aOs[D_STATUS])+")"       
SqlExecute(cSql)
if SQLErrorNO() > 0 
   fMensagem() 
   return(.f.) 
endif 
SqlExecute("commit")	 
SQLRollBack()
SQLEndTrans()
SQLRefresh() 

exemplo do UPDATE

SQLBeginTrans()
cSql:="UPDATE os SET"
cSql+="      pedido="+any2sql(aOs[D_PEDIDO])+" ,"
cSql+="     cliente="+any2sql(aOs[D_CLIENTE])+" ,"
cSql+="        data="+any2sql(aOs[D_DATA])+" ,"
cSql+="        hora="+any2sql(aOs[D_HORA])+" ,"   
cSql+="     contato="+any2sql(aOs[D_CONTATO])+" ,"
cSql+="      status="+any2sql(aOs[D_STATUS])+" "       
cSql+=" WHERE pedido ='"+ALLTRIM(aOs[D_PEDIDO])+"'"
sqlexecute(cSql)
if SQLErrorNO() > 0 
   fMensagem() 
   return(.f.) 
endif 
SQLExecute("commit")
SQLRollBack() 
SQLEndTrans() 
SQLRefresh()

Obrigado

Luiz Fernando

Link to comment
Share on other sites

Luiz você consegue acessar um outro banco fazendo assim, não sei mas acho que talvez possa ser a solução.

Voce conecta no banco1, por exemplo e usando (banco.tabela) você pode trabalhar em qualquer outro banco do seu mysql.

SELECT a.campo1,

a.campo2,

b.campo3

FROM banco1.tabela a

INNER JOIN banco2.tabela b

ON a.registro = b.registro ;

Sds,

Link to comment
Share on other sites

Luiz você consegue acessar um outro banco fazendo assim, não sei mas acho que talvez possa ser a solução.

Voce conecta no banco1, por exemplo e usando (banco.tabela) você pode trabalhar em qualquer outro banco do seu mysql.

SELECT a.campo1,

a.campo2,

b.campo3

FROM banco1.tabela a

INNER JOIN banco2.tabela b

ON a.registro = b.registro ;

Sds,

Geraldo obrigado pela resposta, o problema que os dois banco de dados fica em locais diferente, um esta numa rede local, e o outro esta armazenado num provedor na net.

Obrigado

Link to comment
Share on other sites

SqlLib_Conn( AllTrim(Lower(nServidor)),Val(nPorta),Lower(AllTrim(nDatabase)),Lower(AllTrim(nUsuario)),Lower(AllTrim(nSenha)),SQL_NO_WARNING,"MySql")
if SQL_Errorno() > 0
alerta3(,'Não foi possivel estabelecer',' a Conexão...')
return .f.
else
alerta1(,'Conexão estabelecida com sucesso...')
// no inicio só precisa incluir a linha abaixo

nConn1:= SQLGetConnection()

return .t.

endif

quando for atualizar a outra base, conecta, salva o que tem a salvar e mata ela

Link to comment
Share on other sites

SqlLib_Conn( AllTrim(Lower(nServidor)),Val(nPorta),Lower(AllTrim(nDatabase)),Lower(AllTrim(nUsuario)),Lower(AllTrim(nSenha)),SQL_NO_WARNING,"MySql")

if SQL_Errorno() > 0

alerta3(,'Não foi possivel estabelecer',' a Conexão...')

return .f.

else

alerta1(,'Conexão estabelecida com sucesso...')

// no inicio só precisa incluir a linha abaixo

nConn1:= SQLGetConnection()

return .t.

endif

quando for atualizar a outra base, conecta, salva o que tem a salvar e mata ela

Blz irei fazer desta forma, pois é só nesta situação mesmo, sobre o comando nConn1:= SQLGetConnection() como só uso um banco de dados nem preciso usar ele né, pq aqui nunca usei.

Obrigado

Link to comment
Share on other sites

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...