Pedido de ajuda simples no MySql

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Pedido de ajuda simples no MySql

Mensagem por rochinha »

Amiguinho,
Desculpe, mas eu não sabia que existia tanta diversidade. É que não estou familiarizado com essa questão.
Em primeiro lugar, a busca pelo conhecimento começa na vontade de saber. A sua vontade em buscar, garimpar, testar, errar e entender deve ser compativel com seu tempo livre.
Então, peço ajuda dos colegas inclusive para definir qual utilizar, pois cada pessoa que me instrui dá uma informação diferente, acabo sem saber qual é melhor.
Todo programador precisa adquirir personalidade própria e transferi-la para a programação. Portanto cada um terá sua opinião relativa a alguma ferramento, mesmo porque, já testou várias e se deu bem com uma ou outra.
Eu uso Harbour. Portanto, gostaria de usar um tipo de banco de dados que seja o mais facilmente acessível pelo Harbour possível.

No mundo Harbour a falta de compatibilidade é infima, mas não nula. A maioria dos databases existentes podem ser acessados por ele devido as suas características de implementação por vários meios, seja, OLE ou nativo, usando e abusando de acessos via ADO e/ou por meios de bibliotecas especiais.
Minha pretensão é que haja maior confiabilidade nos dados, pois, atualmente, com DBF, tenho tido muita perda de integridade dos dados.
Esta também é a vontade de todos, mas voce verá que muitos que ainda usam .DBF não tem tanto a reclamar como pintam por ai. Insegurança existe em qualquer database. A diferença são as ferramentas existentes para manipular e manter os dados.
Voce pode muito bem usar .DBF com "maior confiabilidade", usando LetoDB, NetIO, Mediator. Estes criam uma ponte de acesso e mantem seguros os dados da mesma forma que os grandes databases que tem seus serviços entre a aplicação e os dados.
Também tenho pretensão que o banco seja acessível em PHP. Embora eu não tenha muito conhecimento a respeito, estou começando a fazer algumas coisas simples em PHP; seria bom que os dados fossem acessíveis dessa forma.
Tempos atrás apresentei aqui uns exemplos de acesso a .DBF via .PHP, mas nada impede de ter seus .DBFs acessados via .PHP usando ADO. Eu mesmo faço acesso via .PHP e via .ASP nos módulos de eCommerce de meu sistema.
Por fim, tenho pretensão de aprender VBA. Ainda não comecei, mas, caso dê certo, gostaria que a base de dados fosse também acessível em VBA.
VBA é um set da linguagem Visual Basic para automatizar o Office, não vislumbro seu uso com databases. Talvez voce estivesse dizendo VBS.

O que vcs me recomendam?

Sugiro que:

- Instale um VirtualBox
- Instale um Windows Server 2003 no VirtualBOX(ele é leve e tem muitas ferramentas, inclusive servidor IIS)
- Instale um WAMP no VirtualBOX(ele possui servidor Apache, PHP e MySQL para testes usando .PHP)
- Instale cada database conhecido como MySQL, Firebird, PostGRES, SQL Server Express e TinyDB
- Configure uma instalação Harbour completa, sugiro a 3.2
- Faça seus testes dentro deste ambiente e tire suas próprias conclusões de qual deverá usar.

Verifique e ranqueie as opiniões dos colegas para ter uma direção mas faça um levantamento das características e limites de cada database usado.

Parta para a ação.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Pedido de ajuda simples no MySql

Mensagem por alxsts »

Olá!

Os conselhos do Rochinha são realmente preciosos, não há dúvida.

Apenas acho que a sugestão de instalar máquina virtual e vários bancos de dados, servidor Apache, etc, tudo ao mesmo tempo, vai atrapalhar a tua caminhada.

Você tem um problema grande: parou no tempo do DOS/Clipper e agora quer recuperar o tempo que passou. Use a técnica de quebrar um grande problema em problemas menores. Priorize cada um deles e ataque individualmente.

Quer usar Harbour, acessando um banco de dados relacional? Quer aprender SQL? Ótimo! Use o SQL Server que você disse já ter instalado. Aprenda SQL com ele. Quer conectar SQL Server com Harbour? Aprenda ADO. Funciona muito bem! Depois quer aprender PHP? Sem problemas, funciona também. Eu optaria por ASP .Net (paga bem melhor).

Enfim, todas as ferramentas que você deseja aprender tem materiais disponíveis e gratuitos na internet. É só correr atrás. Se você lê inglês, estude no site da W3C - WorldWide Web Consortium ou W3 Schools. É bem didático e cheio de exemplos em Visual Basic, perfeitamente entendíveis por Clippeiros. Boa sorte, mas principalmente: bom trabalho!

Edit: só para complementar, o link acima direciona para o tutorial de SQL. Este outro leva para a home da W3 Schools, onde se encontram os links para todos os tutoriais.
[]´s
Alexandre Santos (AlxSts)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Pedido de ajuda simples no MySql

Mensagem por cjp »

Colegas,

Em primeiro lugar, muito obrigado pela disposição em ajudar.

Li e reli várias vezes o que vocês escreveram, bem como os tutoriais citados.

Sei que tenho uma grande tarefa pela frente, que não será fácil, sobretudo em razão de minha falta de tempo e de conhecimentos técnicos. Mas quero tentar e vou persistir.

Como o Alex disse, vou começar aos poucos, uma coisa de cada vez. Com o SQL Server eu já me entendi razoavelmente (quero dizer: já entendi o básico, já consegui criar uma base de teste). O próximo passo que eu gostaria de testar é o ADO, para as funções mais básicas com a base de dados de dentro do Harbour. Estou usando o Harbour 3.2. Vocês poderiam me passar um tutorial bem básico com as funções mais simples do ADO para eu abrir a base do SQL Server e coisa assim?

Aparentemente, nesse primeiro momento, eu não vou precisar do PgAdmin III, correto? Então, como faço a conexão à base pelo ADO? Precisa de alguma LIB ou CH especial para ele rodar? Ou algum include?

Se vocês puderem me passar um exemplo bem simples, mas completo (que rode), apenas para eu começar a mexer, ficaria grato.

Inacio
Inacio de Carvalho Neto
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Pedido de ajuda simples no MySql

Mensagem por rochinha »

Amiguinho,

Se voce usar o Harbour tradicional a partir da versão 3.2 verá que os códigos estarão na pasta examples\rddado\tests.

Eu olhei eles e tremi, pois são muito complexos, veja os exemplos:

Código: Selecionar todos

/*
 * $Id: access1.prg 14908 2010-06-26 08:32:23Z vszakats $
 */

#include "adordd.ch"

REQUEST ADORDD

PROCEDURE Main()

   SET DATE ANSI
   SET CENTURY ON

   USE ( hb_dirBase() + "test.mdb" ) VIA "ADORDD" TABLE "Table1"

   Browse()

   USE

   RETURN
ACCESS2.PRG

Código: Selecionar todos

/*
 * $Id: access2.prg 14908 2010-06-26 08:32:23Z vszakats $
 */

/* Testing dbCreate() with Access database engine */

#include "adordd.ch"

REQUEST ADORDD

PROCEDURE Main()

   SET DATE ANSI
   SET CENTURY ON

   dbCreate( "test2.mdb;table1", { { "FIRST",   "C", 10, 0 },;
                                   { "LAST",    "C", 10, 0 },;
                                   { "AGE",     "N",  8, 0 },;
                                   { "MYDATE",  "D",  8, 0 } }, "ADORDD" )

   USE test2.mdb VIA "ADORDD" TABLE "table1"

   APPEND BLANK
   test2->First   := "Homer"
   test2->Last    := "Simpson"
   test2->Age     := 45
   test2->MyDate  := Date()

   APPEND BLANK
   test2->First   := "Lara"
   test2->Last    := "Croft"
   test2->Age     := 32
   test2->MyDate  := Date() + 2

   GO TOP
   Browse()

   GO TOP
   CLS
   LOCATE FOR ( 'First = "Lara"' )
   ? "Found:", Found()
   USE

   RETURN
MYSQL1.PRG

Código: Selecionar todos

/*
 * $Id: mysql1.prg 9217 2008-08-23 15:02:49Z vszakats $
 */

#include "adordd.ch"

REQUEST ADORDD

function Main()

   USE test00 VIA "ADORDD" TABLE "ACCOUNTS" MYSQL ;
      FROM "www.freesql.org" USER "myuser" PASSWORD "mypass"

   Browse()

   USE

return nil
MYSQL3.PRG

Código: Selecionar todos

/*
 * $Id: mysql3.prg 9217 2008-08-23 15:02:49Z vszakats $
 */

// Testing LOCATE and CONTINUE

#include "adordd.ch"

REQUEST ADORDD

function Main()

   USE test00 VIA "ADORDD" TABLE "ACCOUNTS" MYSQL ;
      FROM "www.freesql.org" USER "myuser" PASSWORD "mypass"

   LOCATE FOR "City LIKE 'Chi*'"

   while ! Eof()
      ? test00->First, test00->City
      CONTINUE
   end   

   USE

return nil
No lugar de www.freesql.org coloque 127.0.0.1 pois voce estará acesando o host, mas se o acesso for de uma maquina e o servidor SQL estiver em outra coloque o IP da maquina.

Espero não tê-lo assustado.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Pedido de ajuda simples no MySql

Mensagem por cjp »

Na verdade eu já havia entendido e testado os exemplos do Harbour, mas eles não funcionam. Pelo menos não aqui na minha máquina. Está dando o seguinte erro na compilação:

Imagem

Por isso pedi algum exemplo que funcionasse, que desse para eu rodar aqui e começar a mexer.

Será que sou eu que estou fazendo algo errado, ou esses modelos não são para compilar diretamente como estão?
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Pedido de ajuda simples no MySql

Mensagem por JoséQuintas »

Se vai fazer em clipper, mais prático usar vbscript.

Se vai fazer em Harbour, mais prático ADO.

ADO é padrão no Windows, e tem em tudo que é linguagem, pra praticamente todo tipo de banco de dados.

Em Harbour

Código: Selecionar todos

Conexao := wapi_CreateObject( "ADODB.Connection" )
Conexao:ConnectionString := "sdfsdfdsfdsfdsfds"
Conexao:Open()
rsConsulta := Conexao:Execute( "SELECT * FROM database" )
DO WHILE .NOT. rsConsulta:Eof()
   ? rsConsulta:Fields( "CODIGO" ):Value
   ? rsConsulta:Fieds( "NOME" ):Value
   rsConsulta:MoveNext()
ENDDO
rsConsulta:Close()
Conexao:Close()
ou em vbscript pra usar no Clipper via RUN.

Código: Selecionar todos

DIM Conexao, rsConsulta
Conexao = CreateObject( "ADODB.Connection" )
Conexao.ConnectionString = "sdfsfdsfsdfd"
Conexao.Open
set rsConsulta = Conexao.Execute( "SELECT * FROM database" )
DO WHILE Not rsConsulta:Eof()
   ' rsconsulta.Fields( "CODIGO" ).Value
   ' rsconsulta.Fields( "NOME" ).Value
   rsconsulta.MoveNext
LOOP
rsConsulta.Close
Conexao.Close
rsconsulta = nothing
conexão = nothing
Uma chatice no VB/VBScript é que se não vai usar o retorno, não pode chamar como função.
Então o CLOSE() vira CLOSE
E pra objetos é obrigatório usar o SET, então o resultado da consulta variável = x vira SET variável=x
E o DIM pra declarar variáveis.
Lógico, como não é DOS, teria que ter algo mais, dependendo do que quiser fazer com o resultado. (no caso de VBScript)

Tá tudo disponível no Windows desde o XP. Os vírus sabem disso... rs
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/
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Pedido de ajuda simples no MySql

Mensagem por rochinha »

Amiguinho,

Fiz um teste de compilação usando Harbour 3.2 revisão 17626 para compilador Borland:

Código: Selecionar todos

/*
 * $Id: mysql1.prg 9217 2008-08-23 15:02:49Z vszakats $
 */
#include "adordd.ch"

THREAD STATIC t_cTableName
THREAD STATIC t_cEngine
THREAD STATIC t_cServer
THREAD STATIC t_cUserName
THREAD STATIC t_cPassword
THREAD STATIC t_cQuery := ""

REQUEST ADORDD

function Main()

   USE mysql VIA "ADORDD" TABLE "user" MYSQL ;
      FROM "127.0.0.1" USER "root" PASSWORD ""

   Browse()

   USE

return nil

#include "adordd.prg"
No final do código fiz inclusão do ADORDD.PRG que tenho com data de 01/03/2013 com tamanho 51.801. O executável é gerado e um browse é apresentado com os registros da tabela user do database mysql.

Pelo fato desta tabela ser parte integrante do MySQL o aplicativo será executado conforme a programação acima.

download

Os exemplos passados pelo JoséQuintas seguem a programação via automação OLE e se voce analisar o código ADOxB, o mesmo está neste mesmo esquema.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Pedido de ajuda simples no MySql

Mensagem por cjp »

Rochinha,

Compilando o teu exemplo (trocando apenas o nome da base de dados no USE), compila, mas dá o seguinte erro na execução:

Imagem

Ao executar o mysql1 que está no teu download, dá o seguinte erro:

Imagem


Quintas,

O teu exemplo está dando o seguinte erro na compilação:

Imagem
Inacio de Carvalho Neto
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Pedido de ajuda simples no MySql

Mensagem por alxsts »

Olá!

Creio que o que o colega realmente precisa para resolver o seu problema é o comando para compilação, mostrando as libs necessárias.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Pedido de ajuda simples no MySql

Mensagem por rochinha »

Amiguinho,

Primeiro: o erro apresentando ODBC indica que voce precisa baixar e instalar o MySQL ODBC Driver. A maioria dos databases possuem seu próprio driver ODBC diferentemente dos da microsoft que já vem embutidos no Windows.

Em relação as bibliotecas necessárias inclua nas chamadas de seu script de compilação algo como HBWIN.LIB.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Pedido de ajuda simples no MySql

Mensagem por cjp »

Amigo, acresci a lib, mas ainda está dando o mesmo erro na compilação.

Por favor, veja se estou fazendo errado. Fiz o seguinte .bat:

Código: Selecionar todos

cd\hb32\bin
del *.prg
del *.tds
del *.c
del *.ppo
del *.obj
del *.map
del teste.exe*
copy \prg\teste.prg
copy \agenda\teste.hbp
copy ..\extras\rddado\.

hbmk2 teste.hbp

pause
pause

teste.exe
O teste.hbp está assim:

Código: Selecionar todos

# coloque aqui suas libs, precedidas pela letra "l" (minúscula):
-lxhb
-lhbwin
-lhbtip
-lhbct

# coloque aqui os parâmetros de compilação:
-quiet
-oTESTE.EXE

# coloque aqui seus arquivos PRGs:
TESTE.PRG
Falta alguma coisa?

Quanto ao drive, eu instalei um drive do site da Oracle no início. Não tenho certeza se fiz certo. Fui tentar verificar agora, mas não estou achando o local para baixar. Por favor, veja se é neste link: http://www.oracle.com/technetwork/datab ... 58347.html.
Inacio de Carvalho Neto
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Pedido de ajuda simples no MySql

Mensagem por Toledo »

cjp escreveu:Quanto ao drive, eu instalei um drive do site da Oracle no início. Não tenho certeza se fiz certo.
rochinha escreveu:voce precisa baixar e instalar o MySQL ODBC Driver
Amigo, entre no google e procure por: MySQL ODBC Driver

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Pedido de ajuda simples no MySql

Mensagem por cjp »

Foi o que eu fiz, caro Toledo.

Resultado da busca: https://www.google.com.br/search?q=MySQ ... 3&ie=UTF-8.

Clicando no item Download Conector ODBC (o que me pareceu mais adequado), cai nesta tela: http://dev.mysql.com/downloads/connector/odbc/5.1.html.

Cliquei na opção de Download Windows 32 bits (primeira), caí nesta tela: http://dev.mysql.com/downloads/file.php?id=415028.

Fiz login e caí na tela antes copiada (post acima).

Como disse, salvo engano, eu já havia baixado esse drive, mas não tenho certeza. E agora não acho mais onde baixar.
Inacio de Carvalho Neto
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Pedido de ajuda simples no MySql

Mensagem por Toledo »

No final da página tem:
No thanks, just start my download.
http://dev.mysql.com/get/Downloads/Conn ... -win32.msi

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Pedido de ajuda simples no MySql

Mensagem por cjp »

Obrigado, Toledo, e desculpe pela desatenção. Depois que vc falou, lembrei que foi nesse mesmo link que eu tinha instalado.

Instalei novamente o drive, mas continua dando o mesmo erro de OBDC.

Não sei se bastaria instalar, ou se eu teria que fazer mais alguma coisa.
Inacio de Carvalho Neto
Responder