Clipper On Line • Ver Tópico - MYSQL SQLMIX, conectando e criando base e tabela via SQL.

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor Itamar M. Lins Jr. » 15 Abr 2020 22:00

Ola!
Usei o ODBC Windows (x86, 32-bit), MSI Installer 8.0.19 para conexão.

#require "rddsql"
#require "sddodbc"

#include "dbinfo.ch"
#include "simpleio.ch"
REQUEST SQLMIX, SDDODBC

PROCEDURE Main()

   LOCAL nConnection, nI, aI

#if defined( __HBSCRIPT__HBSHELL )
   rddRegister( "SQLBASE" )
   rddRegister( "SQLMIX" )
   //hb_SDDODBC_Register()
#endif

   Set( _SET_DATEFORMAT, "yyyy-mm-dd" )

   rddSetDefault( "SQLMIX" )
   nConnection := rddInfo( RDDI_CONNECT, { "ODBC", "Server=localhost;Driver={MySQL ODBC 8.0 Unicode Driver};dsn=;User=root;Pwd=suasenha;" } )
   IF nConnection == 0
      ? "Could not connect to server", rddInfo( RDDI_ERRORNO ), rddInfo( RDDI_ERROR )
      RETURN
   ENDIF
   ? nConnection
   ? rddInfo( RDDI_EXECUTE, "CREATE DATABASE IF NOT EXISTS `basedados`" )
   ? rddInfo( RDDI_EXECUTE, "USE `basedados`" )
   ? rddInfo( RDDI_EXECUTE, "DROP TABLE country" )
   ? rddInfo( RDDI_EXECUTE, "CREATE TABLE country (CODE char(3), NAME char(50), RESIDENTS int(11))" )
   ? rddInfo( RDDI_EXECUTE, "INSERT INTO country values ('LTU', 'Lithuania', 3369600),('USA', 'United States of America', 305397000), ('POR', 'Portugal', 10617600), ('POL', 'Poland', 38115967), ('AUS', 'Australia', 21446187), ('FRA', 'France', 64473140), ('RUS', 'Russia', 141900000)" )
   ? dbUseArea( .T., , "SELECT * FROM country", "country" )
   ? "LASTREC:", country->(LastRec())
   DO WHILE ! Eof()
      aI := Array( FCount() )
      FOR nI := 1 TO FCount()
         aI[ nI ] := FieldGet( nI )
      NEXT
      ? RecNo(), hb_ValToExp( aI )
      dbSkip()
   ENDDO
   ? "LASTREC:", LastRec()
   dbCloseAll()

   RETURN

Harbour 3.4, não precisa nem compilar!

hbrun test2.prg

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor JoséQuintas » 15 Abr 2020 22:56

E não querendo ser chato.... o mesmo fonte em ADO.

//#require "rddsql"
//#require "sddodbc"

//#include "dbinfo.ch"
//#include "simpleio.ch"
//REQUEST SQLMIX, SDDODBC

PROCEDURE Main()

   LOCAL nConnection, nI, aI

//#if defined( __HBSCRIPT__HBSHELL )
//   rddRegister( "SQLBASE" )
//   rddRegister( "SQLMIX" )
//   //hb_SDDODBC_Register()
//#endif

   Set( _SET_DATEFORMAT, "yyyy-mm-dd" )

//   rddSetDefault( "SQLMIX" )
     cn := win_OleCreateObject( "ADODB.Connection" )
//   nConnection := rddInfo( RDDI_CONNECT, { "ODBC", "Server=localhost;Driver={MySQL ODBC 8.0 Unicode Driver};dsn=;User=root;Pwd=suasenha;" } )
cn:ConnectionString :=  "Server=localhost;Driver={MySQL ODBC 8.0 Unicode Driver};dsn=;User=root;Pwd=suasenha;"
cn:Open()
//   IF nConnection == 0
//      ? "Could not connect to server", rddInfo( RDDI_ERRORNO ), rddInfo( RDDI_ERROR )
//      RETURN
//   ENDIF
//   ? nConnection
//   ? rddInfo( RDDI_EXECUTE, "CREATE DATABASE IF NOT EXISTS `basedados`" )
cn:Execute( "CREATE DATABASE IF NOT EXISTS 'basededados'" )
//   ? rddInfo( RDDI_EXECUTE, "USE `basedados`" )
//   ? rddInfo( RDDI_EXECUTE, "DROP TABLE country" )
cn:Execute( "DROP TABLE country" )
//   ? rddInfo( RDDI_EXECUTE, "CREATE TABLE country (CODE char(3), NAME char(50), RESIDENTS int(11))" )
cn:Execute( "CREATE TABLE country (CODE char(3), NAME char(50), RESIDENTS int(11))" )
//   ? rddInfo( RDDI_EXECUTE, "INSERT INTO country values ('LTU', 'Lithuania', 3369600),('USA', 'United States of America', 305397000), ('POR', 'Portugal', //10617600), ('POL', 'Poland', 38115967), ('AUS', 'Australia', 21446187), ('FRA', 'France', 64473140), ('RUS', 'Russia', 141900000)" )
cn:Execute( "INSERT INTO country values ('LTU', 'Lithuania', 3369600),('USA', 'United States of America', 305397000), ('POR', 'Portugal', //10617600), ('POL', 'Poland', 38115967), ('AUS', 'Australia', 21446187), ('FRA', 'France', 64473140), ('RUS', 'Russia', 141900000)" )
//   ? dbUseArea( .T., , "SELECT * FROM country", "country" )
rs := cn:Execute( "SELECT * FROM country" )
//   ? "LASTREC:", country->(LastRec())
? rs:RecordCount()
//   DO WHILE ! Eof()
DO WHILE ! :Eof()
//      aI := Array( FCount() )
//      FOR nI := 1 TO FCount()
FOR nI = 1 TO Rs:Fields.Count
//         aI[ nI ] := FieldGet( nI )
A[ nl ] := rs:Fields( nI -1 ):Value
      NEXT
//      ? RecNo(), hb_ValToExp( aI )
      ? hb_ValToExp( al )
//      dbSkip()
Rs:MoveNext()
   ENDDO
//   ? "LASTREC:", LastRec()
//   dbCloseAll()
rs:Close()
cn:Close()
//
//   RETURN


Pra quem usa XHabour... só usar ADO, dá quase no mesmo.
Pra quem usa Harbour... tem as duas opções.

Itamar M. Lins Jr. escreveu:Usei o ODBC Windows (x86, 32-bit), MSI Installer 8.0.19 para conexão.


Aí acho que ele quis dizer conector MySQL 8.0
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor Itamar M. Lins Jr. » 15 Abr 2020 23:21

Ola!
Coloque isso ai ( BROWSE() ) no seu código, antes do final, e veja se funciona.

  ? "LASTREC:", LastRec()
  BROWSE()
   dbCloseAll()


Ou tente rodar seu código no linux... Tá muito preocupado com o xHarbour, como se não tivesse alternativa.
Para mim quanto mais liberto melhor.
Aí acho que ele quis dizer conector MySQL 8.0


Escrevi o que está lá no site de download do MYSQL, CONECTOR ODBC... Copiei e colei aqui...

Connector/ODBC 8.0.19


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor JoséQuintas » 16 Abr 2020 01:02

Itamar M. Lins Jr. escreveu:Coloque isso ai ( BROWSE() ) no seu código, antes do final, e veja se funciona.


OOOOOOHHHHHHH

Crie um array e coloque lá browse() pra ver se funciona.
Ué... também não funciona.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor Mario Mesquita » 20 Abr 2021 10:10

Bom dia, pessoal.

Peguei carona no tópico, pois trata de conexão pra MySql. Baixei um conector "mysql-connector-odbc-8.0.23-win32" pra instalar. Estou usando o MySql na versão 5.7, esse conector serve?

Não tinha distinção entre ANSI ou UTF-8, vi que tem isso na string de conexão no código postado aqui. Alías, qual a string nesse caso, aquela mesmo?

É uma pergunta besta, de pato novo mesmo, rsrs... Só instalar isso e já vai conectar? Desativei a conexão com a LibMySql pra testar essa via ADO.

Tem que mexer no fonte, RDD, algo assim ou é automático?

Desculpe a chatice, procurei por aqui, mas talvez esteja em algum tópico que não achei. Desde já agradeço a ajuda.

Saudações,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 557
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 73 vezes
Mens.Curtidas: 13 vezes

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor JoséQuintas » 20 Abr 2021 11:21

De uma forma geral, todos funcionam com todos, salvo exceções.

Eu estou preferindo os conectores do MariaDB.
Os do MySQL são dependentes do run-time do Visual C, cada um de uma versão diferente.
Tanto faz, mas prefira as versões mais recentes.

Tenho um cliente ainda com o conector MySQL 3.51, e certos comandos falham com essa versão.

Tanto faz o conector MariaDB ou MySQL, tanto faz se o servidor for MariaDB ou MySQL.

A principal diferença é que o MariaDB é totalmente grátis, enquanto o MySQL não, apesar de ser muito usado.
O nome MySQL e os fontes foram vendidos pra Oracle, mas o MySQL open source continuou, trocando de nome pra MariaDB.
É praticamente a mesma coisa, por isso tudo funciona igual/misturado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor Mario Mesquita » 20 Abr 2021 11:36

Oi, Quintas.

Pois é, o Maria é compatível e totalmente free, pensei em usa-lo mesmo mas tive receio pela vasta documentação do MySql. Mas se tudo pra ele pode ser usado pro Maria, é um caso a pensar e mudar agora antes de começar à vera. Isso de licença relativa pode ser mesmo uma preocupação, se a Oracle começar a pegar no pé.

Achei uma página de VB orientando a instalar e configurar o conector/ODBC, tem que abrir lá e configurar, né? Senão não conecta, certo?

Sds,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 557
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 73 vezes
Mens.Curtidas: 13 vezes

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor JoséQuintas » 20 Abr 2021 14:18

A string define tudo, incluindo o conector, nessa parte não dá pra inventar, porque qualquer erro não funciona.
Algumas que uso/usei

FUNCTION ExcelConnection( cFileName, cVersion )

   LOCAL oConexao

   DO CASE
   CASE ValType( cVersion ) == "C"
   CASE ".xlsx" $ Lower( cFileName ); cVersion := "12.0 Xml" // XLSX
   //CASE "t00" $ Lower( cFileName )  ; cVersion := "5.0"  // 95
   OTHERWISE                        ; cVersion := "8.0" // 97/2000/XP
   ENDCASE
   oConexao := win_OleCreateObject( "ADODB.Connection" )
   oConexao:ConnectionString := ;
      [Provider=Microsoft.ACE.OLEDB.12.0;Data Source=] + cFileName + ;
      [;Extended Properties="Excel ] + cVersion + [;HDR=YES";]

   RETURN oConexao

FUNCTION MySQLConnection( cServer, cDatabase, cUser, cPassword )

   LOCAL cnConnection, cString

   cString := iif( win_OsIs10(), "Provider=MSDASQL;", "" )
   DO CASE
   CASE IsMaquinaJPA();                   cString += "Driver={MariaDB ODBC 3.1 Driver};"
   CASE "HAROLDO" $ AppEmpresaApelido() ; cString += "Driver={MySQL ODBC 3.51 Driver};"
   OTHERWISE ;                            cString += "Driver={MySQL ODBC 5.3 ANSI Driver};"
   ENDCASE
   cString += "Server=" + cServer + ";" + ;
      "Port=3306;" + ;
      "Stmt=;"    + ;
      "Database=" + cDatabase + ";" + ;
      "User="     + cUser + ";" + ;
      "Password=" + cPassword + ";" + ;
      "Collation=latin1_swedish_ci;" + ;
      "AUTO_RECONNECT=1;"

   cnConnection := win_OleCreateObject( "ADODB.Connection" )
   cnConnection:ConnectionString  := cString
   cnConnection:CursorLocation    := AD_USE_CLIENT
   cnConnection:CommandTimeOut    := 600 // seconds
   cnConnection:ConnectionTimeOut := 600 // seconds

   RETURN cnConnection

FUNCTION ADSConnection( cPath )

   LOCAL oConexao := win_OleCreateObject( "ADODB.Connection" )

   oConexao:ConnectionString := "Provider=Advantage OLE DB Provider;" + ;
      "Mode=Share Deny None;" + ;
      "Show Deleted Records in DBF Tables with Advantage=False;" + ;
      "Data Source=" + cPath + ";Advantage Server Type=ADS_Local_Server;" + ;
      "TableType=ADS_CDX;Security Mode=ADS_IGNORERIGHTS;" + ;
      "Lock Mode=Compatible;" + ;
      "Use NULL values in DBF Tables with Advantage=True;" + ;
      "Exclusive=No;Deleted=No;"
   oConexao:CursorLocation := AD_USE_CLIENT
   oConexao:CommandTimeOut := 20

   RETURN oConexao

FUNCTION SQLiteConnection( cFileName )

   LOCAL oConexao := win_OleCreateObject( "ADODB.Connection" )

   oConexao:ConnectionString := iif( win_OsIs10(), "Provider=MSDASQL;", "" ) + ;
      "Driver={SQLite3 ODBC Driver};Database=" + cFileName + ";"
   oConexao:CursorLocation := AD_USE_CLIENT
   oConexao:CommandTimeOut := 20

   RETURN oConexao


A do SQLite usei pra conectar na biblioteca do MediaMonkey, tocador de música.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor JoséQuintas » 20 Abr 2021 15:02

Aproveitando....

O interessante do ADO é isso que está no post anterior: trocou a string, trocou de base de dados.
Tem particularidades nos comandos, mas a grande maioria é comum a todos.
Nessa lista tem pra Excel, MySQL, SQLite e DBF, mas a lista é grande.

O SQLMIX também tem opção de ODBC, e o Linux também tem ODBC.
Acaba abrindo possibilidade de trabalhar com qualquer base de dados.

Mas como eu já disse, todas tem a parte em comum, que não tem nada a ver com DBF.
É começar a usar, pra ir trocando as necessidades/vícios do DBF, e ir acostumando as novas bases usando SQL.
Uma vez acostumado com isso, se por acaso for trocar novamente, já não vai ter nenhum mistério.

Acostumado a abrir dezenas de arquivos DBF/CDX, é difícil acostumar que uma simples conexão é suficiente pra fazer a mesma coisa, ou que pode trazer tudo pronto, o que dependia de muito processamento.
A dificuldade maior não é aprender, é se convencer de que isso funciona mesmo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor Mario Mesquita » 20 Abr 2021 18:30

Boa noite a todos.

Quintas, a ideia é de fato entrar de cabeça no SQL. Será um início difícil e trabalhoso mas com certeza vai render frutos.

Sobre o MariaDb, dá pra instalar e deixar junto com o MySql? Ou é bobagem já que um é meio igual ao outro? Se pode, os dois usam a porta 3306? Não dá conflito ter a mesma porta?

No caso de ter os dois, tenho que ter um conector pra cada um? E tem que fazer aquilo lá na ODBC, configurar senão não conecta, certo?

Notei que o HeidiSQL usa como default uma "libmariadb.dll" pro gerenciamento, né? Penso que ser os comandos são iguais, melhor ficar com o Maria. Se tudo que tem aqui de orientação pro MySql serve pro Maria nem preciso ter os dois. Mas me ocorreu uma coisa: se em um hipotético cliente já tem uma instalação de MySql. Por isso a questão de usar a mesma porta. É meio cedo para eu me preocupar com isso mas é uma possibilidade. Inclusive de ter outros SGDBs pois são tantos sistemas hoje em dia que os clientes precisam e usam que isso é uma questão importante pra quem ainda não conhece bem essas coisas.

Sds,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 557
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 73 vezes
Mens.Curtidas: 13 vezes

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor Fernando queiroz » 20 Abr 2021 22:20

Itamar M. Lins Jr. escreveu:Ola!
Usei o ODBC Windows (x86, 32-bit), MSI Installer 8.0.19 para conexão.

#require "rddsql"
#require "sddodbc"

#include "dbinfo.ch"
#include "simpleio.ch"
REQUEST SQLMIX, SDDODBC

PROCEDURE Main()

   LOCAL nConnection, nI, aI

#if defined( __HBSCRIPT__HBSHELL )
   rddRegister( "SQLBASE" )
   rddRegister( "SQLMIX" )
   //hb_SDDODBC_Register()
#endif

   Set( _SET_DATEFORMAT, "yyyy-mm-dd" )

   rddSetDefault( "SQLMIX" )
   nConnection := rddInfo( RDDI_CONNECT, { "ODBC", "Server=localhost;Driver={MySQL ODBC 8.0 Unicode Driver};dsn=;User=root;Pwd=suasenha;" } )
   IF nConnection == 0
      ? "Could not connect to server", rddInfo( RDDI_ERRORNO ), rddInfo( RDDI_ERROR )
      RETURN
   ENDIF
   ? nConnection
   ? rddInfo( RDDI_EXECUTE, "CREATE DATABASE IF NOT EXISTS `basedados`" )
   ? rddInfo( RDDI_EXECUTE, "USE `basedados`" )
   ? rddInfo( RDDI_EXECUTE, "DROP TABLE country" )
   ? rddInfo( RDDI_EXECUTE, "CREATE TABLE country (CODE char(3), NAME char(50), RESIDENTS int(11))" )
   ? rddInfo( RDDI_EXECUTE, "INSERT INTO country values ('LTU', 'Lithuania', 3369600),('USA', 'United States of America', 305397000), ('POR', 'Portugal', 10617600), ('POL', 'Poland', 38115967), ('AUS', 'Australia', 21446187), ('FRA', 'France', 64473140), ('RUS', 'Russia', 141900000)" )
   ? dbUseArea( .T., , "SELECT * FROM country", "country" )
   ? "LASTREC:", country->(LastRec())
   DO WHILE ! Eof()
      aI := Array( FCount() )
      FOR nI := 1 TO FCount()
         aI[ nI ] := FieldGet( nI )
      NEXT
      ? RecNo(), hb_ValToExp( aI )
      dbSkip()
   ENDDO
   ? "LASTREC:", LastRec()
   dbCloseAll()

   RETURN

Harbour 3.4, não precisa nem compilar!

hbrun test2.prg

Saudações,
Itamar M. Lins Jr.


em Python criar a tabela em SQL
import mariadb

class ArquivosClass:
            self.conn = mariadb.connect(
                user=cUser,
                password=cPassword,
                host=cServer,
                port=3306,
                database=cDatabase )
      self.cursor = self.conn.connection.cursor()
      self.cursor.execute("CREATE TABLE country (CODE char(3), NAME char(50), RESIDENTS int(11)) ")
self.cursor.execute("INSERT INTO country values ('LTU', 'Lithuania', 3369600),('USA', 'United States of America', 305397000), ('POR', 'Portugal', 10617600), ('POL', 'Poland', 38115967), ('AUS', 'Australia', 21446187), ('FRA', 'France', 64473140), ('RUS', 'Russia', 141900000)" )
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor Fernando queiroz » 20 Abr 2021 22:20

Itamar M. Lins Jr. escreveu:Ola!
Usei o ODBC Windows (x86, 32-bit), MSI Installer 8.0.19 para conexão.

#require "rddsql"
#require "sddodbc"

#include "dbinfo.ch"
#include "simpleio.ch"
REQUEST SQLMIX, SDDODBC

PROCEDURE Main()

   LOCAL nConnection, nI, aI

#if defined( __HBSCRIPT__HBSHELL )
   rddRegister( "SQLBASE" )
   rddRegister( "SQLMIX" )
   //hb_SDDODBC_Register()
#endif

   Set( _SET_DATEFORMAT, "yyyy-mm-dd" )

   rddSetDefault( "SQLMIX" )
   nConnection := rddInfo( RDDI_CONNECT, { "ODBC", "Server=localhost;Driver={MySQL ODBC 8.0 Unicode Driver};dsn=;User=root;Pwd=suasenha;" } )
   IF nConnection == 0
      ? "Could not connect to server", rddInfo( RDDI_ERRORNO ), rddInfo( RDDI_ERROR )
      RETURN
   ENDIF
   ? nConnection
   ? rddInfo( RDDI_EXECUTE, "CREATE DATABASE IF NOT EXISTS `basedados`" )
   ? rddInfo( RDDI_EXECUTE, "USE `basedados`" )
   ? rddInfo( RDDI_EXECUTE, "DROP TABLE country" )
   ? rddInfo( RDDI_EXECUTE, "CREATE TABLE country (CODE char(3), NAME char(50), RESIDENTS int(11))" )
   ? rddInfo( RDDI_EXECUTE, "INSERT INTO country values ('LTU', 'Lithuania', 3369600),('USA', 'United States of America', 305397000), ('POR', 'Portugal', 10617600), ('POL', 'Poland', 38115967), ('AUS', 'Australia', 21446187), ('FRA', 'France', 64473140), ('RUS', 'Russia', 141900000)" )
   ? dbUseArea( .T., , "SELECT * FROM country", "country" )
   ? "LASTREC:", country->(LastRec())
   DO WHILE ! Eof()
      aI := Array( FCount() )
      FOR nI := 1 TO FCount()
         aI[ nI ] := FieldGet( nI )
      NEXT
      ? RecNo(), hb_ValToExp( aI )
      dbSkip()
   ENDDO
   ? "LASTREC:", LastRec()
   dbCloseAll()

   RETURN

Harbour 3.4, não precisa nem compilar!

hbrun test2.prg

Saudações,
Itamar M. Lins Jr.


em Python criar a tabela em SQL
import mariadb

class ArquivosClass:
            self.conn = mariadb.connect(
                user=cUser,
                password=cPassword,
                host=cServer,
                port=3306,
                database=cDatabase )
      self.cursor = self.conn.connection.cursor()
      self.cursor.execute("CREATE TABLE country (CODE char(3), NAME char(50), RESIDENTS int(11)) ")
      self.cursor.execute("INSERT INTO country values ('LTU', 'Lithuania', 3369600),('USA', 'United States of America', 305397000), ('POR', 'Portugal', 10617600), ('POL', 'Poland', 38115967), ('AUS', 'Australia', 21446187), ('FRA', 'France', 64473140), ('RUS', 'Russia', 141900000)" )


ou de uma forma mais organizada para inserir

         sql = "INSERT INTO formapagamento(CODE, NAME, RESIDENTS) VALUES (?, ?, ?)"
         dados = [('LTU', 'Lithuania', 3369600),
                ('USA', 'United States of America', 305397000),
                ('POR', 'Portugal', 10617600),
                ('POL', 'Poland', 38115967),
                ('AUS', 'Australia', 21446187),
                ('FRA', 'France', 64473140),
                ('RUS', 'Russia', 141900000)]
               
         self.cursor.executemany(sql, dados)
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor Itamar M. Lins Jr. » 21 Abr 2021 00:45

Olá!
Python, quando procurei informação notei que não tem nada.
É uma linguagem, como outra qualquer que faz uso de outras linguagens para escrever as telas.
Muito diferente do Free Pascal que o povo entorta no nariz, mas faz tudo com sua IDE(Lazarus).
Python está mais para C++ que qualquer outra coisa que se diz moderna.
Procure na internet vídeos de conexão com MariaDb/MySQL e(GRUD) telas gráficas usando Python, é o maior balaio de gato. Vai usar (QT/GTK...)
Agora faça o mesmo usando Lazarus e vai ver a distância que uma já tem da outra, tudo via CLICKS, simples.
Resumindo, vai baixar o ZEUS pela própria IDE, colocar os controles pela IDE e desenhar a tela(Linux/Windows) a mesma coisa.
Mas o Python é hoje vista como uma das "melhores" linguagens pelo menos na procura.
Screenshot_20210421_003740.png


É de praxe, se o mercado está procurando e pagando bem, ao novo programador vamos aprender Python pq precisamos sobreviver, agora o que estão fazendo com essa quantidade enorme de aplicativos, que raramente é ou foram feitos em Python eu não sei.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor Fernando queiroz » 21 Abr 2021 16:26

Itamar M. Lins Jr. escreveu:Olá!
Python, quando procurei informação notei que não tem nada.
É uma linguagem, como outra qualquer que faz uso de outras linguagens para escrever as telas.


Itamar ela faz uso de frameworks voltados para o que se quer fazer ex:

Quando usamos console no Harbour nao usamos nada , Pythom a mesma coisa, pode-se usar muita coisa somente em console

quando usamos no Harbour Hwgui entre outras, no Python temos a gui padrao da linguagem a PYSIMPLEGUI, mas temos centenas de frameworks para cada coisa que voce quiser fazer.

eu optei pela PYQT5, por ter compatibilidade com:
I-OS
LINUX
WINDOWS
ANDROID
MAC-OS
existe frameworks especificamente para programas de painéis de carro/motos (é o caso da minha moto)
que Usa Linux + Python + QT https://youtu.be/TmQua7gUGQA

no caso da QT temos o QTDesigner para desenhar as telas , depois podemos usar elas em formato .UI ou dentro do próprio Designer gerar a tela em formato Python e incorporar ao projeto como fazemos em HWGUI

pode ser compilada e entregue somente o .EXE ao cliente, ou com .DLL de acordo com seu gosto.

e tem uma infinidades de frameworks e pacotes para agregar ao projeto sem precisar ficar reinventando a roda.

https://pypi.org/

um do pacotes que mais me chamou atencao é o SELENIUM-WIRE-4.2.4 , faz milagres na WEB
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

MYSQL SQLMIX, conectando e criando base e tabela via SQL.

Mensagempor Fernando queiroz » 21 Abr 2021 17:05

comecei a brincar convertendo meu aplicativo de Harbour 3.2 + HWGUI + MARIADB para Python + PYQT5 + MARIADB, vamos ver no que vai dar,
será um bom aprendizado, estou gostando da brincadeira, usando alguns pacotes adicionais vai ser muito facil implementar acesso a sites para baixar NFE e coisas afins.

e também estou com a ideia de converter a SEFAZCLASS do Quintas para Python, pois os pacotes que achei disponíveis e gratuitos eram muito fraquinhos.
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Próximo



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro