|
DRIVER NATIVO MULTILINK DATABASE WX SOLUÇÕES - MANUAL |
Débuté par Boller, 24 oct. 2024 14:43 - 29 réponses |
| |
| | | |
|
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 14:43 |
DRIVER NATIVO MULTILINK DATABASE WX SOLUÇÕES - MANUAL
O MultiLink, suporta conexão nativa com diversas bases de dados. Aqui
Servidor Microsoft SQL (MSSQL) Microsoft LocalDB (MSLocalDB) MySQL MariaDB PostgreSQL Oráculo Pássaro de fogo SQLite SAP HANA Sybase DB2 (IBM) DBISAM Servidor de banco de dados Advantage (ADS) Teradata Topspeed (.TPS) Redis
Em breve mais novos bancos de dados...
Essas bases são suportadas por meio de aulas especializadas dentro da biblioteca, como as que foram descritas e memorizadas. Cada uma dessas classes oferece métodos para configurar, conectar, executar comandos SQL, gerenciar transações.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:17 |
Aqui está a lista de configurações do MultiLink , com base
1. CONFIGURAR Este método é utilizado para configurar a conexão com base de dados ou serv
Parâmetros Gerais: ############## string server: O endereço do servidor de banco de dados. int port: A porta de comunicação com o banco de dados (se aplicável). string user: O nome de usuário para autenticação no banco de dados. string password: A senha do usuário para autenticação. string database: O nome do banco de dados (schema) será utilizado. bool ssl: Indica se a conexão deve usar SSL (aplicável a certos bancos). string fileName: Para bases de dados fundamentadas string searchPathSchema: O esquema do banco de dados (usado em alguns bancos como PostgreSQL).
Exemplo: MSSQL_CLIENT.CONFIGURE("localhost", 1433, "sa", "senha123", "MinhaBaseDeDados", true, false);
2. COMEÇAR_CONECTAR Método Sem parâmetros.
3. FIM_CONECTAR Método utilizado para fechar a conexão ativa com o banco de dados.
Sem parâmetros. 4. INÍCIO_TRANSAÇÃO Inicia uma transação no banco de dados. Sem parâmetros.
5. COMMIT_TRANSAÇÃO Confirme a transação no banco de dados. Parâmetro opcional: bool autoRollbackIfFails: Se for verdade, a operação será revertida automaticamente em caso de falha no commit.
6. TRANSAÇÃO_ROLLBACK Reverter uma transação Sem parâmetros.
7. CONJUNTO Adicionado ou configurado um parâmetro para uso em uma consulta SQL.
Parâmetros: string parameter: O nome do parâmetro que será utilizado na consulta SQL. object value: O valor correspondente ao parâmetro.
Exemplo: MSSQL_CLIENT.SET("@idPedido", 1000);
8. SQL_EXEC Executa uma instrução SQL (como INSERT, UPDATE ou DELETE) que não retorna dados.
Parâmetros: string sql: O comando SQL que será executado.
Exemplo: MSSQL_CLIENT.SQL_EXEC("INSERT INTO Pedidos (IdCliente, DataPedido) VALUES (@idCliente, GETDATE())");
9. CONSULTA_SQL Executa uma consulta SQL que retorna resultados, como uma consulta SELECT.
Parâmetros: string sql: O comando SQL que será executado.
Exemplo: MSSQL_CLIENT.SQL_QUERY("SELECT * FROM Pedidos WHERE IdPedido = @idPedido");
10. OBTER Método utilizado no REDIS_CLIENT para recuperar o valor de uma chave no Redis.
Parâmetro: string key:A chave será recuperada.
Exemplo: string valor = REDIS_CLIENT.GET("chave");
11. DEFINIDO_TEMPORIZADO Método para definir uma chave no Redis com expiração.
Parâmetros: string key: string value:O va int days: Dias até a expiração da chave. int hours: Horas até a expiração da chave. int minutes: Minutos até a expiração da chave. int seconds: Segundos até a expiração da chave.
Exemplo: REDIS_CLIENT.SET_TIMED("chave_tempo", "valor_tempo", 0, 1, 30, 0); // expira em 1h30m
12. ANEXAR Adicionado um anexo ao e-mail que será enviado.
Parâmetro: string pathArquivo: O caminho completo
Exemplo: EMAIL_CLIENT.ANEXAR("C:\\Documentos\\relatorio.pdf");
13. TEXTO_EMAIL Envie um e-mail em formato de texto simples.
Parâmetros: string emailDestinatario: O endereço de e-mail do destinatário. string assunto: O assunto do e-mail. string conteudo: O corpo do e-mail (deve ser texto simples).
Exemplo: EMAIL_CLIENT.TEXT_EMAIL("cliente@empresa.com", "Assunto", "Este é o conteúdo do e-mail.");
14. EMAIL_HTML Envie um e-mail em formato HTML.
Parâmetros: string emailDestinatario: O endereço de e-mail do destinatário. string assunto: O assunto do e-mail. string conteudoHtml: O corpo do email
Exemplo: EMAIL_CLIENT.HTML_EMAIL("cliente@empresa.com", "Assunto", "<html><body><p>Conteúdo HTML</p></body></html>");
15. CHAMADA_IO Método para executar um comando externo ou arquivo correspondente.
Parâmetros: string args: Argumentos que serão passados para o comando externo.
Exemplo: TOPSPEED_READER.CALL_IO("processar_arquivo_tps.exe");
16. LEIA Método para ler um arquivo .tps(TopSpeed).
Parâmetros: string tps_file: O caminho para o arquivo .tpsque será lido. string file_password: (Opcional) A senha do arquivo, se aplicável.
Exemplo: string conteudo = TOPSPEED_READER.READ("C:\\Dados\\arquivo.tps", "senha123");
17. LINHA_ATUAL_CSV Retorna a linha atual da consulta SQL formatada como CSV. Sem parâmetros.
18. LINHA_ATUAL_XML Retorna a linha atual da consulta SQL formatada como XML.
19. SEQ_DE_CONSULTA_SQL Parâmetros: string sql: O comando SQL que será executado. Exemplo: if (SYBASE_CLIENT.SQL_QUERY_SEQ("SELECT * FROM Clientes WHERE Ativo = 1")) { while (SYBASE_CLIENT.TEM_LINHAS()) { string nomeCliente = SYBASE_CLIENT.VAL_COLUNA(1).ToString(); Console.WriteLine(nomeCliente); } }
20. TEM_LINHAS Método que verifica se há linhas disponíveis no resultado da consulta anterior. Retorno: bool: Retorno verdadeiro se houver linhas, falso caso contrário.
21. VAL_COLUNA Método que recupera o valor de uma coluna específica na linha atual do cursor. Parâmetros: int coluna: O índice da coluna a ser lida (baseado em zero). Exemplo: var valor = SYBASE_CLIENT.VAL_COLUNA(2); // Pega o valor da segunda coluna
22. SET_TIMED (para Redis) Método utilizado para definir uma chave no Redis com um tempo de expiração.
Parâmetros: string key: A chave será definida. string value: O valor associado à chave. int days: Dias até a expiração da chave. int hours: Horas até a expiração da chave. int minutes: Minutos até a expiração da chave. int seconds: Segundos até a expiração da chave.
Exemplo: REDIS_CLIENT.SET_TIMED("sessao_usuario", "dados_usuario", 0, 0, 30, 0); // Expira em 30 minutos
23. GET_DELETE (para Redis) Parâmetros: string key: A chave para ser recuperada e restauração. Exemplo: string valor = REDIS_CLIENT.GET_DELETE("sessao_usuario");
24. ANEXAR (para e-mails) Adicionado um arquivo anexo ao e-mail que será enviado. Parâmetro: string pathArquivo: O caminho do arquivo a ser anexado.
25. TEXT_EMAIL e HTML_EMAIL Métodos para enviar e-mails em formato texto ou HTML, respectivamente. Ambos aceitam:
Parâmetros: string emailDestinatario: O endereço de e-mail do destinatário. string assunto: O assunto do e-mail. string conteudo: O corpo do e-mail (texto ou HTML).
Exemplos: EMAIL_CLIENT.TEXT_EMAIL("destinatario@empresa.com", "Assunto", "Este é o corpo do e-mail em texto."); EMAIL_CLIENT.HTML_EMAIL("destinatario@empresa.com", "Assunto", "<h1>Este é o corpo do e-mail em HTML</h1>");
26. SQL_EXEC e SQL_QUERY Ambos os métodos são usados para executar comandos SQL, onde:
SQL_EXEC : Para comandos que não retornam dados (INSERT, UPDATE, DELETE). SQL_QUERY : Para comandos que retornam dados (SELECT).
27. CHAMADA_IO Execução de um arquivo correspondentemente externo.
Parâmetros: string args: Argumentos passados ao seguintevel.
Exemplo: TOPSPEED_READER.CALL_IO("processar_arquivo.exe");
28. LEIA (para músculos TPS) É um arquivo de dados no formato TopSpeed.
Parâmetros: string tps_file: O caminho para o arquivo .tps. string file_password: (opcional) Uma senha para o arquivo, se necessário.
Exemplo: string dados = TOPSPEED_READER.READ("caminho/para/arquivo.tps", "senha");
29. LINHA_ATUAL_CSV e LINHA_ATUAL_XML Métodos que retornam a linha atual da consulta em formato CSV ou XML, respectivamente.
Retorno: string: A linha formatada.
Exemplos: string linhaCSV = SYBASE_CLIENT.LINHA_ATUAL_CSV(); string linhaXML = SYBASE_CLIENT.LINHA_ATUAL_XML();
Conclusão Esses métodos e configurações do MultiLink buscam uma maneira eficiente e integrada para acessar e manipular dados em várias bases de dados, bem como enviar notificações por e-mail.
Aqui está mais alguns detalhes dos comandos e parâmetros principais do MultiLink com base nos códigos fornecidos e exemplos
1. CONFIGURE - Configuração da Conexão Cada classe de cliente de banco de dados possui um método CONFIGURE que define as parâmetros para estabelecer a conexão com o banco de dados.
Parâmetros comuns para todos os bancos de dados:
servidor : O endereço do servidor do banco port (em alguns casos): Porta utilizada para conexão. user : Nome do usuário para acessar senha : Senha do usuário. banco de dados : Nome do banco de dados.
Exemplo: // Configura a conexão com um banco de dados SQL Server MSSQL_CLIENT.CONFIGURE("servidor", "usuario", "senha", "banco", true, false);
2. Conexão ini e fim BEGIN_CONNECT(): Inicia a conexão END_CONNECT(): Finalize a conexão ativa.
Exemplo: MSSQL_CLIENT.BEGIN_CONNECT(); // Inicia a conexão MSSQL_CLIENT.END_CONNECT(); MSSQL_CLIENT.END_CONNECT(); // Encerra a conexão
3. Transações BEGIN_TRANSACTION(): Inicia uma transação. COMMIT_TRANSACTION(bool autoRollbackIfFails = false): Finaliza a transação e confirma as mudanças. ROLLBACK_TRANSACTION(): Desfaz as mudanças caso algo dê errado.
Exemplo: MSSQL_CLIENT.BEGIN_TRANSACTION(); // Inicia uma transação MSSQL_CLIENT.COMMIT_TRANSACTION(); MSSQL_CLIENT.COMMIT_TRANSACTION();
// Comita a transação MSSQL_CLIENT.ROLLBACK_TRANSACTION(); MSSQL_CLIENT.ROLLBACK_TRANS // Rola para trás em caso de falha
4. Execução de Comandos SQL SQL_EXEC(string sql): Executa um comando SQL, como INSERT, UPDATEou DELETE. SQL_QUERY(string sql): Executa um comando SQL que retorna dados (por exemplo, SELECT).
Exemplo: MSSQL_CLIENT.SQL_EXEC("INSERT INTO Clientes (Nome) VALUES ('João')"); MSSQL_CLIENT.SQL_QUERY("SELECT * FROM Clientes");
5. Parâmetros SQL SET(string parameter, object value): Defina parâmetros para o comando SQL antes da execução.
Exemplo: MSSQL_CLIENT.SET("id", 1001); MSSQL_CLIENT.SQL_EXEC("DELETE FROM Pedidos WHERE id = @id");
6. Recuperação de Dados DATA:Varão MSG: Variável que armazena a mensagem de status da operação (conexão, erro, sucesso, etc.).
Exemplo: MSSQL_CLIENT.SQL_QUERY("SELECT * FROM Produtos"); var produtos = MSSQL_CLIENT.DATA; // JSON com os resultados
Aqui está uma seção sobre o envio de e-mails e notificações usando o MultiLink , com base nos métodos e parâmetros apresentados anteriormente:
Envio de E-mails com MultiLink
O MultiLink fornece uma funcionalidade para o envio de e-mails com suporte para anexos, tanto em formato de te
1. Configuração do Servidor de E-mail Antes de enviar um e-mail,
Método: public static void CONFIGURE(string servidorSmtp, int portaSmtp, bool ssl, string usuarioEmail, string senhaConta)
Parâmetros: servidorSmtp : Endereço do servidor SMTP, como smtp.gmail.com. portaSmtp : Número ssl : Define se a conexão dev usuarioEmail : O endereço de e-mail do r senhaConta : A senha da conta do e-mail para autenticação.
Exemplo: EMAIL_CLIENT.CONFIGURE("smtp.gmail.com", 587, true, "seuemail@gmail.com", "suasenha");
2. Envio de E-mail em Texto Esse método permite enviar um e-mail simples em formato de texto.
Método: public static bool TEXT_EMAIL(string emailDestinatario, string assunto, string conteudo)
Parâmetros: emailDestinatário : Endereço de e-mail do destinatário. assunto : Assunto do e-mail. conteudo : O corpo do e-mail (deve ser apenas texto).
Exemplo: EMAIL_CLIENT.TEXT_EMAIL("cliente@empresa.com", "Assunto Importante", "Esse é um e-mail de notificação.");
3. Envio de e-mail em HTML Esse método permite enviar um e-mail no formato HTML, ideal para e-mails formatados com estilos e imagens.
Método: public static bool HTML_EMAIL(string emailDestinatario, string assunto, string conteudoHtml)
Parâmetros emailDestinatário : Endereço de e-mail do destinatário. assunto : Assunto do e-mail. conteudoHtml : O corpo do e-mail em formato HTML.
Exemplo: EMAIL_CLIENT.HTML_EMAIL("cliente@empresa.com", "Promoção", "<html><body><h1>Desconto Especial!</h1><p>Confira nossa promoção</p></body></html>");
4. Anexar Arquivos ao E-mail Caso seja necessário enviar um arquivo
Método: public static void ANEXAR(string caminhoArquivo)
Parâmetro: caminhoArquivo : O caminho completo do arquivo que será anexado ao e-mail.
Exemplo: EMAIL_CLIENT.ANEXAR("C:\\Relatorios\\relatorio.pdf");
5. Envio de E-mail com Anexo Depois de configurar e anexar os arquivos, o e-mail pode ser
Exemplo de Envio de E-mail com Anexo: EMAIL_CLIENT.CONFIGURE("smtp.seuservidor.com", 587, true, "conta@seuservidor.com", "senha"); EMAIL_CLIENT.ANEXAR("C:\\Documentos\\fatura.pdf"); EMAIL_CLIENT.HTML_EMAIL("cliente@empresa.com", "Fatura Mensal", "<html><body><p>Segue a sua fatura em anexo.</p></body></html>");
6. Mensagens de Status A variável MSGarmazena a mensagem de status da operação de envio de e-mail. Essa variável pode ser consultada após o envio para verificar se ocorreu algum erro.
Exemplo: if (!EMAIL_CLIENT.HTML_EMAIL("cliente@empresa.com", "Promoção", "<html><body><h1>Desconto!</h1></body></html>")) { Console.WriteLine(EMAIL_CLIENT.MSG); // Exibe a mensagem de erro }
Resumo de Comandos Relacionados a Envio de E-mails
Método Descrição CONFIGURE Configure as informações do servidor SMTP, porta, SSL, e autenticação de e-mail. TEXT_EMAIL Envie um e-mail sem formato de texto simples. HTML_EMAIL Envie um e-mail em formato HTML. ANEXAR Anexa um ou mais arquivos ao e-mail antes de enviar. MSG Armazena uma mensagem de status da operação (sucesso ou erro).
Vantagens do Uso do MultiLink para Envio de E-mails
Simples de usar : A configuração é rápida e intuitiva com apenas alguns métodos. Suporte a anexos : Fácil de enviar relatórios, faturas ou outros documentos por e-mail. Suporte a SSL : Garante que a comunicação seja feita de forma segura através do protocolo SMTP com SSL. Flexível : Suporta tanto formato de texto quanto HTML, permitindo uma personalização completa dos e-mails.
ESSE É O NOVO MULTILINK
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:21 |
Resumo dos Comandos do MultiLink Conexão com Banco de Dados CONFIGURAR
Configura como infor INÍCIO_CONECTAR
Estabelece a conexão com o banco de dados. FIM_CONECTAR
Finalize a conexão com o banco de dados. INÍCIO_TRANSAÇÃO
Inicia uma transação no banco de dados. COMMIT_TRANSACTION
Confirme as alterações feitas na transação. TRANSAÇÃO_ROLLBACK
Reverter as alterações feitas na transação. Execução de Comandos SQL SQL_EXEC
Executar comandos CONSULTA_SQL
Executar comandos SQL SEQ_DE_CONSULTA_SQL
Executa uma consulta SQL e permite iterar os resultados com um cursor. Manipulação de Resultados TEM_LINHAS
Verifique se há linhas disponíveis no resultado da consulta. VAL_COLUNA
Recuperar o valor de uma coluna específica na linha atual. LINHA_ATUAL_CSV
Retorna a linha atual em formato CSV. LINHA_ATUAL_XML
Retorna a linha at Manipulação de Parâmetros DEFINIR Adicionadas configurações para comandos SQL. Redis (Banco DEFINIDO_TEMPORIZADO
Defina uma chave no Redis com tempo de expiração. PEGAR
Recupera o valor associado a uma chave no Redis. OBTER_EXCLUIR
Recuperar e remover o valor associado a uma chave no Redis. Envio de E-mails ANEXAR
Adicionado um arquivo anexo ao e-mail. TEXTO_EMAIL
Envia um e-mail em formato texto. HTML_EMAIL
Envie um e-mail em formato HTML. Processamento de Arquivos CHAMADA_IO CALL_IO : Permite a execução de itens externos, facilitando integrações com sistemas externos ou processos que não estão diretamente relacionados ao banco de dados. Executa um arquivo correspondentemente externo.
LEIA É um arquivo de dados no formato TopSpeed.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:22 |
Vamos criar um exemplo para conectar em uma base MS SQL Server usando o Multilink em C# e WLanguage.
Exemplo em C#: c sustenido
Copiar código using MultiLink; using System;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server_name", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { Console.WriteLine("Conectado ao banco de dados!"); // Executar uma consulta MSSQL_CLIENT.SQL_QUERY("SELECT * FROM table_name"); Console.WriteLine(MSSQL_CLIENT.DATA); MSSQL_CLIENT.END_CONNECT(); } else { Console.WriteLine("Erro: " + MSSQL_CLIENT.MSG); } } } Exemplo em WLanguage (Windev): widioma
Copiar código // Configurando a conexão MSSQL_CLIENT.CONFIGURE("server_name", "user", "password", "database", True, True)
// Iniciando a conexão IF MSSQL_CLIENT.BEGIN_CONNECT() THEN Info("Conectado ao banco de dados!") // Executando uma consulta MSSQL_CLIENT.SQL_QUERY("SELECT * FROM table_name") Info(MSSQL_CLIENT.DATA) // Fechando a conexão MSSQL_CLIENT.END_CONNECT() ELSE Info("Erro: " + MSSQL_CLIENT.MSG) END
Esses exemplos demonstram como usar o Multilink para conectar a um banco MS SQL Server e realizar consultas em ambas as linguagens. Uma classe MSSQL_CLIENTdo Multilink gerencia a conexão, transações e execução de comandos SQL.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:23 |
Vamos criar um exemplo para obter a lista de produtos de um pedido número 1000, considerando duas tabelas relacionadas no MS SQL Server: Orders(Pedidos) e OrderDetails(Detalhes do Pedido).
Estrutura das Tabelas: Pedidos (Pedidos):
OrderID(Chave Primária) CustomerID OrderDate OrderDetails (Detalhes do Pedido):
OrderDetailID(Chave Primária) OrderID(Chave Estrangeira para Orders) ProductID Quantity Exemplo em C#: c sustenido
Copiar código using MultiLink; using System;
class Program { static void Main() { // Configura a conexão MSSQL_CLIENT.CONFIGURE("server_name", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { Console.WriteLine("Conectado ao banco de dados!");
// Consulta para obter os detalhes do pedido número 1000 string sqlQuery = @" SELECT od.ProductID, od.Quantity FROM OrderDetails od INNER JOIN Orders o ON od.OrderID = o.OrderID WHERE o.OrderID = 1000";
MSSQL_CLIENT.SQL_QUERY(sqlQuery); Console.WriteLine(MSSQL_CLIENT.DATA); // Exibe os resultados em formato JSON
MSSQL_CLIENT.END_CONNECT(); } else { Console.WriteLine("Erro: " + MSSQL_CLIENT.MSG); } } } Exemplo em WLanguage (Windev): widioma
Copiar código // Configurando a conexão MSSQL_CLIENT.CONFIGURE("server_name", "user", "password", "database", True, True)
// Iniciando a conexão IF MSSQL_CLIENT.BEGIN_CONNECT() THEN Info("Conectado ao banco de dados!") // Consulta para obter os detalhes do pedido número 1000 sQuery is string = " SELECT od.ProductID, od.Quantity FROM OrderDetails od INNER JOIN Orders o ON od.OrderID = o.OrderID WHERE o.OrderID = 1000" MSSQL_CLIENT.SQL_QUERY(sQuery) Info(MSSQL_CLIENT.DATA) // Exibe os resultados em formato JSON // Fechando a conexão MSSQL_CLIENT.END_CONNECT() ELSE Info("Erro: " + MSSQL_CLIENT.MSG) END
Explicação: Em ambas as linguagens, utilizamos uma consulta SQL com um INNER JOINentre as tabelas OrderDetailse Orderspara obter os produtos do pedido número 1000. O resultado é exibido no formato JSON.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:23 |
Vamos criar um exemplo para consultar dados usando as tabelas: Clientes, Pedidos, Pedidos_Itens, Impostos, e Transportadora, utilizando o MultiLink em C# e WLanguage.
Estrutura das Tabelas: Clientes :
ClienteID(PK) NomeCliente Endereco Pedidos :
PedidoID(PK) ClienteID(FK) DataPedido Pedidos_Itens :
PedidoItemID(PK) PedidoID(FK) ProdutoID Quantidade Impostos :
ImpostoID(PK) PedidoItemID(FK) ValorImposto Transportadora :
TransportadoraID(PK) NomeTransportadora ValorFrete Exemplo em C#: c sustenido
Copiar código using MultiLink; using System;
class Program { static void Main() { // Configurando a conexão MSSQL_CLIENT.CONFIGURE("server_name", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { Console.WriteLine("Conectado ao banco de dados!");
// Consulta para obter os detalhes dos pedidos e impostos de um cliente específico string sqlQuery = @" SELECT c.NomeCliente, p.DataPedido, pi.ProdutoID, pi.Quantidade, imp.ValorImposto, t.NomeTransportadora FROM Pedidos p INNER JOIN Clientes c ON p.ClienteID = c.ClienteID INNER JOIN Pedidos_Itens pi ON p.PedidoID = pi.PedidoID INNER JOIN Impostos imp ON pi.PedidoItemID = imp.PedidoItemID LEFT JOIN Transportadora t ON p.TransportadoraID = t.TransportadoraID WHERE c.ClienteID = 1001";
MSSQL_CLIENT.SQL_QUERY(sqlQuery); Console.WriteLine(MSSQL_CLIENT.DATA); // Exibe os resultados em formato JSON
MSSQL_CLIENT.END_CONNECT(); } else { Console.WriteLine("Erro: " + MSSQL_CLIENT.MSG); } } } Exemplo em WLanguage (Windev): widioma
Copiar código // Configurando a conexão MSSQL_CLIENT.CONFIGURE("server_name", "user", "password", "database", True, True)
// Iniciando a conexão IF MSSQL_CLIENT.BEGIN_CONNECT() THEN Info("Conectado ao banco de dados!") // Consulta para obter os detalhes dos pedidos e impostos de um cliente específico sQuery is string = " SELECT c.NomeCliente, p.DataPedido, pi.ProdutoID, pi.Quantidade, imp.ValorImposto, t.NomeTransportadora FROM Pedidos p INNER JOIN Clientes c ON p.ClienteID = c.ClienteID INNER JOIN Pedidos_Itens pi ON p.PedidoID = pi.PedidoID INNER JOIN Impostos imp ON pi.PedidoItemID = imp.PedidoItemID LEFT JOIN Transportadora t ON p.TransportadoraID = t.TransportadoraID WHERE c.ClienteID = 1001"
MSSQL_CLIENT.SQL_QUERY(sQuery) Info(MSSQL_CLIENT.DATA) // Exibe os resultados em formato JSON // Fechando a conexão MSSQL_CLIENT.END_CONNECT() ELSE Info("Erro: " + MSSQL_CLIENT.MSG) END
Explicação: O exemplo utiliza várias tabelas relacionadas para obter detalhes de pedidos, produtos, impostos, e transportadoras. A consulta SQL inclui INNER JOINtabelas relacionais e um LEFT JOINpara trazer os dados de Transportadoraque existem. O código exibe o resultado em formato JSON tanto no C# quanto no WLanguage. Esses exemplos permitem a interação completa com o banco de dados MS SQL Server, usando o MultiLink para abstrair as chamadas da DLL e gerenciar a conexão.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:24 |
Visão geral O Multilink, desenvolvido pela WX Soluções, fornece acesso nativo a bancos de dados em vários sistemas. Esta DLL suporta múltiplos mecanismos de banco de dados como o MS SQL Server, e é totalmente integrado com C# e WLanguage. Abaixo, discutiremos os principais métodos disponíveis e seu uso.
Métodos Multilink C# (MS SQL Server) CONFIGURE(servidor, usuário, senha, banco de dados, trustCert, criptografar) Configura a string de conexão com o servidor, credenciais do usuário e parâmetros de segurança.
BEGIN_CONNECT() Inicia a conexão com o SQL Server. Garanta que as credenciais e a configuração estejam definidas de antemão.
END_CONNECT() Fecha a conexão SQL atual e descarta o objeto de conexão.
BEGIN_TRANSACTION() Inicia uma transação SQL para operações atômicas.
COMMIT_TRANSACTION(rollbackOnFail) Confirma a transação atual. Opcionalmente, reverte em caso de falha.
ROLLBACK_TRANSACTION() Reverte a transação ativa.
SQL_EXEC(sql) Executa comandos SQL que não são de consulta, como INSERT, UPDATE ou DELETE, com parâmetros opcionais.
SQL_QUERY(sql) Executa uma consulta SELECT e retorna os resultados como JSON. Permite buscar registros de tabelas.
SET(param, value) Adiciona um parâmetro SQL para a próxima consulta ou comando SQL.
Métodos multilink WLanguage (MS SQL Server) MultilinkConfigure(server, user, password, database, trustCert, encrypt) Configura a conexão com o servidor MS SQL, incluindo credenciais e parâmetros de segurança.
MultilinkBeginConnect() Inicia a conexão com o servidor SQL. Deve ser chamada após configurar a conexão.
MultilinkEndConnect() Finaliza e desconecta a sessão SQL atual.
MultilinkBeginTransaction() Inicia uma transação SQL, ideal para transações que precisam ser atômicas.
MultilinkCommitTransaction(rollbackOnFail) Confirma a transação SQL, com a opção de rollback caso falhe.
MultilinkRollbackTransaction() Realiza o rollback da transação ativa, desconsiderando alterações não confirmadas.
MultilinkSQLExec(sql) Executa comandos SQL (como INSERT, UPDATE, DELETE) e retorna o número de registros abordados.
MultilinkSQLQuery(sql) Realiza uma consulta SELECT e retorna os dados no formato JSON.
MultilinkSet(param, value) Define parâmetros de SQL para serem usados nas consultas ou execuções subsequentes.
Benefícios do uso do Multilink Compatibilidade entre plataformas : funciona perfeitamente com C# e WLanguage para conexão com o MS SQL Server. Segurança : Certificados de confiança e opções de criptografia garantem uma conexão segura. Gerenciamento de transações : oferece suporte a transações SQL, permitindo consistência confiável de dados. Manipulação eficiente de dados : a serialização JSON dos resultados da consulta simplifica a manipulação de dados. Consultas parametrizadas : fornece suporte para instruções preparadas por meio SETde métodos, reduzindo o risco de injeção de SQL. Ao usar o Multilink, você pode otimizar tarefas de gerenciamento de banco de dados em C# e WLanguage com uma interface unificada, melhorando a eficiência em ambientes com vários bancos de dados.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:24 |
Visão Geral O Multilink, desenvolvido pela WX Soluções, oferece acesso nativo a diversos sistemas de banco de dados, incluindo o MS SQL Server. Ele é totalmente integrado ao C# e WLanguage, fornecendo métodos robustos para lidar com consultas e transações.
Métodos C# Multilink (MS SQL Server) CONFIGURE(server, user, password, database, trustCert, encrypt) Configura a conexão com o servidor SQL, fornecendo credenciais e parâmetros de segurança.
BEGIN_CONNECT() Inicia a conexão com o servidor SQL após a configuração adequada.
END_CONNECT() Encerra a conexão SQL aberta, garantindo a liberação de recursos.
BEGIN_TRANSACTION() Inicia uma transação SQL para garantir transações atômicas.
COMMIT_TRANSACTION(rollbackOnFail) Confirma a transação SQL. Caso a execução falhe, você pode fazer o rollback automaticamente.
ROLLBACK_TRANSACTION() Desfaz as operações dentro de uma transação ativa.
SQL_EXEC(sql) Executa comandos SQL como INSERT, UPDATE e DELETE, retornando o número de consultas afetadas.
SQL_QUERY(sql) Executa uma consulta SELECT e retorna os dados como JSON.
SET(param, value) Define parâmetros para serem usados nas próximas consultas SQL, permitindo consultas parametrizadas.
Métodos WLanguage Multilink (MS SQL Server) MultilinkConfigure(server, user, password, database, trustCert, encrypt) Configura a conexão com o servidor MS SQL, permitindo a inserção de credenciais e configurações de segurança.
MultilinkBeginConnect() Inicia a conexão com o banco de dados após a configuração inicial.
MultilinkEndConnect() Desconecta uma sessão SQL ativa.
MultilinkBeginTransaction() Inicia uma transação SQL para garantir a consistência das operações.
MultilinkCommitTransaction(rollbackOnFail) Confirma a transação SQL, com a possibilidade de rollback em caso de falha.
MultilinkRollbackTransaction() Desfaz as operações dentro da transação ativa.
MultilinkSQLExec(sql) Executa comandos SQL e retorna a quantidade de registros afetados.
MultilinkSQLQuery(sql) Executa uma consulta SELECT e retorna os dados no formato JSON.
MultilinkSet(param, value) Define parâmetros SQL para consultas ou comandos subsequentes.
Benefícios do Multilink Compatibilidade Multiplataforma : Funciona perfeitamente com C# e WLanguage, permitindo o acesso ao MS SQL Server de forma unificada. Segurança : Suporte a certificados e criptografia para conexões seguras. Gerenciamento de Transações : Oferece suporte a transações SQL para garantir a consistência dos dados. Manipulação Eficiente de Dados : Retorna os dados das consultas em formato JSON, facilitando o processamento. Consultas Parametrizadas : Suporte a consultas preparadas através dos métodos SET, reduzindo riscos de injeção SQL. Ao utilizar o Multilink, você simplifica o gerenciamento de bancos de dados, melhorando a eficiência de suas operações em ambientes com múltiplos sistemas de banco de dados.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:25 |
Exemplos de Uso do Multilink para MS SQL Server
Exemplo 1: Conexão e Execução de Comandos em C# using MultiLink;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { MSSQL_CLIENT.SQL_EXEC("INSERT INTO Clientes (Nome, Email) VALUES ('Adriano', 'adriano@example.com')"); MSSQL_CLIENT.END_CONNECT(); } else { Console.WriteLine(MSSQL_CLIENT.MSG); } } }
Exemplo 2: Conexão e Consulta com Transação em C# using MultiLink;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { MSSQL_CLIENT.BEGIN_TRANSACTION(); MSSQL_CLIENT.SQL_QUERY("SELECT * FROM Pedidos WHERE ClienteID = 1"); MSSQL_CLIENT.COMMIT_TRANSACTION(); MSSQL_CLIENT.END_CONNECT();
Console.WriteLine(MSSQL_CLIENT.DATA); } else { Console.WriteLine(MSSQL_CLIENT.MSG); } } }
Exemplo 3: Conexão e Execução de Comandos no WLanguage MultilinkConfigure("server", "user", "password", "database", True, True) IF MultilinkBeginConnect() THEN MultilinkSQLExec("INSERT INTO Clientes (Nome, Email) VALUES ('Adriano', 'adriano@example.com')") MultilinkEndConnect() ELSE Info(MultilinkMSG()) END
Exemplo 4: Consulta com Transação no WLanguage MultilinkConfigure("server", "user", "password", "database", True, True) IF MultilinkBeginConnect() THEN MultilinkBeginTransaction() MultilinkSQLQuery("SELECT * FROM Pedidos WHERE ClienteID = 1") MultilinkCommitTransaction(True) Info(MultilinkDATA()) MultilinkEndConnect() ELSE Info(MultilinkMSG()) END
Esses exemplos demonstram como utilizar o Multilink para gerenciar conexões, transações e executar comandos SQL no C# e WLanguage, simplificando o acesso ao MS SQL Server.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:26 |
Vamos avançar com mais um exemplo relacionado ao Multilink , utilizando várias tabelas para consultas relacionadas no MS SQL Server .
Exemplo 5: Consulta Relacionada de Pedidos e Produtos no C# using MultiLink;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { MSSQL_CLIENT.SQL_QUERY(@" SELECT p.PedidoID, c.Nome AS Cliente, pi.ProdutoID, pr.Nome AS Produto, pi.Quantidade FROM Pedidos p INNER JOIN Clientes c ON p.ClienteID = c.ClienteID INNER JOIN Pedidos_Itens pi ON p.PedidoID = pi.PedidoID INNER JOIN Produtos pr ON pi.ProdutoID = pr.ProdutoID WHERE p.PedidoID = 1000");
Console.WriteLine(MSSQL_CLIENT.DATA); MSSQL_CLIENT.END_CONNECT(); } else { Console.WriteLine(MSSQL_CLIENT.MSG); } } }
Exemplo 6: Consulta Relacionada de Pedidos e Produtos no WLanguage MultilinkConfigure("server", "user", "password", "database", True, True) IF MultilinkBeginConnect() THEN MultilinkSQLQuery(" SELECT p.PedidoID, c.Nome AS Cliente, pi.ProdutoID, pr.Nome AS Produto, pi.Quantidade FROM Pedidos p INNER JOIN Clientes c ON p.ClienteID = c.ClienteID INNER JOIN Pedidos_Itens pi ON p.PedidoID = pi.PedidoID INNER JOIN Produtos pr ON pi.ProdutoID = pr.ProdutoID WHERE p.PedidoID = 1000") Info(MultilinkDATA()) MultilinkEndConnect() ELSE Info(MultilinkMSG()) END
Explicação Esses exemplos fazem a consulta dos dados relacionados de Clientes , Pedidos , Itens do Pedido e Produtos , retornando os produtos e suas respectivas quantidades de um pedido específico (neste caso, o pedido número 1000). Os códigos exemplificam como utilizar o Multilink tanto em C# quanto em WLanguage , aproveitando a flexibilidade do framework para acessar o MS SQL Server de forma eficiente e estruturada.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:27 |
Exemplo 7: Inserção de Novo Pedido e Itens no C#
Neste exemplo, você verá como usar o Multilink para realizar a inserção de dados nas tabelas Pedidos e Pedidos_Itens utilizando transações.
using MultiLink;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { if (MSSQL_CLIENT.BEGIN_TRANSACTION()) { // Inserção no pedido MSSQL_CLIENT.SET("ClienteID", 123); MSSQL_CLIENT.SET("DataPedido", "2024-10-24"); MSSQL_CLIENT.SQL_EXEC("INSERT INTO Pedidos (ClienteID, DataPedido) VALUES (@ClienteID, @DataPedido)");
// Obtendo o ID do novo pedido MSSQL_CLIENT.SQL_QUERY("SELECT SCOPE_IDENTITY() AS PedidoID"); string pedidoID = MSSQL_CLIENT.DATA;
// Inserindo itens no pedido MSSQL_CLIENT.SET("PedidoID", pedidoID); MSSQL_CLIENT.SET("ProdutoID", 101); MSSQL_CLIENT.SET("Quantidade", 5); MSSQL_CLIENT.SQL_EXEC("INSERT INTO Pedidos_Itens (PedidoID, ProdutoID, Quantidade) VALUES (@PedidoID, @ProdutoID, @Quantidade)");
// Commit da transação MSSQL_CLIENT.COMMIT_TRANSACTION(); } else { Console.WriteLine(MSSQL_CLIENT.MSG); } MSSQL_CLIENT.END_CONNECT(); } else { Console.WriteLine(MSSQL_CLIENT.MSG); } } }
Exemplo 8: Inserção de Novo Pedido e Itens no WLanguage MultilinkConfigure("server", "user", "password", "database", True, True) IF MultilinkBeginConnect() THEN IF MultilinkBeginTransaction() THEN // Inserindo novo pedido MultilinkSet("ClienteID", 123) MultilinkSet("DataPedido", "2024-10-24") MultilinkSQLExec("INSERT INTO Pedidos (ClienteID, DataPedido) VALUES (@ClienteID, @DataPedido)")
// Obtendo ID do pedido MultilinkSQLQuery("SELECT SCOPE_IDENTITY() AS PedidoID") PedidoID is string = MultilinkDATA()
// Inserindo itens do pedido MultilinkSet("PedidoID", PedidoID) MultilinkSet("ProdutoID", 101) MultilinkSet("Quantidade", 5) MultilinkSQLExec("INSERT INTO Pedidos_Itens (PedidoID, ProdutoID, Quantidade) VALUES (@PedidoID, @ProdutoID, @Quantidade)")
// Commit da transação MultilinkCommitTransaction() ELSE Info(MultilinkMSG()) END MultilinkEndConnect() ELSE Info(MultilinkMSG()) END
Explicação: Esses exemplos mostram como inserir um novo pedido e seus itens relacionados em ambas as linguagens, aproveitando o suporte a transações do Multilink para garantir a consistência dos dados.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:28 |
Exemplo 9: Consulta Relacionada com Impostos e Transportadora (C#)
Neste exemplo, você verá como usar o Multilink para realizar uma consulta que envolve as tabelas Pedidos , Pedidos_Itens , Impostos e Transportadora .
using MultiLink;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { string sqlQuery = @" SELECT P.PedidoID, P.DataPedido, T.NomeTransportadora, I.TaxaImposto FROM Pedidos P JOIN Transportadora T ON P.TransportadoraID = T.TransportadoraID JOIN Impostos I ON P.ImpostoID = I.ImpostoID WHERE P.PedidoID = @PedidoID";
MSSQL_CLIENT.SET("PedidoID", 1000); MSSQL_CLIENT.SQL_QUERY(sqlQuery);
Console.WriteLine(MSSQL_CLIENT.DATA); MSSQL_CLIENT.END_CONNECT(); } else { Console.WriteLine(MSSQL_CLIENT.MSG); } } }
Exemplo 10: Consulta Relacionada com Impostos e Transportadora (WLanguage) MultilinkConfigure("server", "user", "password", "database", True, True) IF MultilinkBeginConnect() THEN PedidoID is int = 1000 sqlQuery is string = " SELECT P.PedidoID, P.DataPedido, T.NomeTransportadora, I.TaxaImposto FROM Pedidos P JOIN Transportadora T ON P.TransportadoraID = T.TransportadoraID JOIN Impostos I ON P.ImpostoID = I.ImpostoID WHERE P.PedidoID = @PedidoID" MultilinkSet("PedidoID", PedidoID) MultilinkSQLQuery(sqlQuery) Info(MultilinkDATA()) MultilinkEndConnect() ELSE Info(MultilinkMSG()) END
Explicação: Esses exemplos demonstram uma consulta entre várias tabelas relacionadas para exibir detalhes do pedido, como o nome da transportadora e a taxa de imposto. O Multilink permite combinar diferentes tabelas em consultas SQL complexas para buscar informações.
Exemplo 11: Exibindo Detalhes de Cliente e Itens do Pedido com Impostos e Transportadora (C#) using MultiLink;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { string sqlQuery = @" SELECT C.NomeCliente, P.PedidoID, PI.NomeProduto, PI.Quantidade, I.TaxaImposto, T.NomeTransportadora FROM Clientes C JOIN Pedidos P ON C.ClienteID = P.ClienteID JOIN Pedidos_Itens PI ON P.PedidoID = PI.PedidoID JOIN Impostos I ON PI.ImpostoID = I.ImpostoID JOIN Transportadora T ON P.TransportadoraID = T.TransportadoraID WHERE P.PedidoID = @PedidoID";
MSSQL_CLIENT.SET("PedidoID", 1000); MSSQL_CLIENT.SQL_QUERY(sqlQuery);
Console.WriteLine(MSSQL_CLIENT.DATA); MSSQL_CLIENT.END_CONNECT(); } else { Console.WriteLine(MSSQL_CLIENT.MSG); } } }
Exemplo 12: Exibindo Detalhes de Cliente e Itens do Pedido com Impostos e Transportadora (WLanguage) MultilinkConfigure("server", "user", "password", "database", True, True) IF MultilinkBeginConnect() THEN PedidoID is int = 1000 sqlQuery is string = " SELECT C.NomeCliente, P.PedidoID, PI.NomeProduto, PI.Quantidade, I.TaxaImposto, T.NomeTransportadora FROM Clientes C JOIN Pedidos P ON C.ClienteID = P.ClienteID JOIN Pedidos_Itens PI ON P.PedidoID = PI.PedidoID JOIN Impostos I ON PI.ImpostoID = I.ImpostoID JOIN Transportadora T ON P.TransportadoraID = T.TransportadoraID WHERE P.PedidoID = @PedidoID" MultilinkSet("PedidoID", PedidoID) MultilinkSQLQuery(sqlQuery) Info(MultilinkDATA()) MultilinkEndConnect() ELSE Info(MultilinkMSG()) END
Explicação: Esse exemplo demonstra como exibir os detalhes de um cliente e os itens de um pedido específico, incluindo as informações de impostos e transportadora, utilizando o Multilink tanto em C# quanto em WLanguage.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:29 |
Exemplo 13: Atualizando o Status de Pedidos e Enviando Notificações (C#) using MultiLink;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { // Atualizar status do pedido string updateStatusSql = "UPDATE Pedidos SET Status = @Status WHERE PedidoID = @PedidoID"; MSSQL_CLIENT.SET("Status", "Enviado"); MSSQL_CLIENT.SET("PedidoID", 1000); MSSQL_CLIENT.SQL_EXEC(updateStatusSql);
// Enviar notificação para o cliente EMAIL_CLIENT.CONFIGURE("smtp.server.com", 587, true, "user@server.com", "password"); string emailCliente = "cliente@exemplo.com"; EMAIL_CLIENT.TEXT_EMAIL(emailCliente, "Pedido Enviado", "Seu pedido foi atualizado para o status 'Enviado'.");
Console.WriteLine(MSSQL_CLIENT.MSG); MSSQL_CLIENT.END_CONNECT(); } else { Console.WriteLine(MSSQL_CLIENT.MSG); } } }
Exemplo 14: Atualizando o Status de Pedidos e Enviando Notificações (WLanguage) MultilinkConfigure("server", "user", "password", "database", True, True) IF MultilinkBeginConnect() THEN // Atualizar status do pedido sqlUpdateStatus is string = "UPDATE Pedidos SET Status = @Status WHERE PedidoID = @PedidoID" MultilinkSet("Status", "Enviado") MultilinkSet("PedidoID", 1000) MultilinkSQLExec(sqlUpdateStatus)
// Enviar notificação por e-mail para o cliente MultilinkEmailConfigure("smtp.server.com", 587, True, "user@server.com", "password") MultilinkEmailText("cliente@exemplo.com", "Pedido Enviado", "Seu pedido foi atualizado para o status 'Enviado'.")
Info(MultilinkMSG()) MultilinkEndConnect() ELSE Info(MultilinkMSG()) END
Explicação: Neste exemplo, atualizamos o status de um pedido no banco de dados para "Enviado" e enviamos uma notificação por e-mail ao cliente. O código mostra como executar comandos SQL e enviar e-mails usando o Multilink .
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:30 |
Exemplo 15: Excluindo Pedidos Antigos e Gerando um Relatório (C#)
using MultiLink;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { // Excluir pedidos antigos string deleteOldOrdersSql = "DELETE FROM Pedidos WHERE DataPedido < @DataLimite"; MSSQL_CLIENT.SET("DataLimite", "2023-01-01"); MSSQL_CLIENT.SQL_EXEC(deleteOldOrdersSql);
// Gerar relatório string selectRelatorio = "SELECT * FROM Pedidos WHERE DataPedido >= @DataLimite"; MSSQL_CLIENT.SET("DataLimite", "2023-01-01"); MSSQL_CLIENT.SQL_QUERY(selectRelatorio);
// Salvar relatório como JSON string relatorio = MSSQL_CLIENT.DATA; System.IO.File.WriteAllText("RelatorioPedidos.json", relatorio);
Console.WriteLine("Relatório gerado com sucesso."); MSSQL_CLIENT.END_CONNECT(); } else { Console.WriteLine(MSSQL_CLIENT.MSG); } } }
Exemplo 16: Excluindo Pedidos Antigos e Gerando um Relatório (WLanguage) MultilinkConfigure("server", "user", "password", "database", True, True) IF MultilinkBeginConnect() THEN // Excluir pedidos antigos sqlDeleteOldOrders is string = "DELETE FROM Pedidos WHERE DataPedido < @DataLimite" MultilinkSet("DataLimite", "2023-01-01") MultilinkSQLExec(sqlDeleteOldOrders)
// Gerar relatório sqlSelectRelatorio is string = "SELECT * FROM Pedidos WHERE DataPedido >= @DataLimite" MultilinkSet("DataLimite", "2023-01-01") MultilinkSQLQuery(sqlSelectRelatorio)
// Salvar relatório como JSON sRelatorio is string = MultilinkDATA() fSaveText("RelatorioPedidos.json", sRelatorio)
Info("Relatório gerado com sucesso.") MultilinkEndConnect() ELSE Info(MultilinkMSG()) END
Explicação: Neste exemplo, o código exclui pedidos antigos, com dados anteriores a 2023-01-01, e gera um relatório em formato JSON dos pedidos mais recentes, salvando-o em um arquivo.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:30 |
Exemplo 17: Atualizando Estoques de Produtos e Emitindo Relatório (C#)
using MultiLink;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { // Atualizar estoque de produtos string updateStockSql = "UPDATE Produtos SET Estoque = Estoque - @QtdVendida WHERE ProdutoID = @ProdutoID"; MSSQL_CLIENT.SET("QtdVendida", 10); MSSQL_CLIENT.SET("ProdutoID", 1001); MSSQL_CLIENT.SQL_EXEC(updateStockSql);
// Gerar relatório de produtos atualizados string selectRelatorio = "SELECT * FROM Produtos WHERE Estoque < 100"; MSSQL_CLIENT.SQL_QUERY(selectRelatorio);
// Salvar relatório como JSON string relatorio = MSSQL_CLIENT.DATA; System.IO.File.WriteAllText("RelatorioEstoque.json", relatorio);
Console.WriteLine("Relatório gerado com sucesso."); MSSQL_CLIENT.END_CONNECT(); } else { Console.WriteLine(MSSQL_CLIENT.MSG); } } }
Exemplo 18: Atualizando Estoques de Produtos e Emitindo Relatório (WLanguage)
MultilinkConfigure("server", "user", "password", "database", True, True) IF MultilinkBeginConnect() THEN // Atualizar estoque de produtos sqlUpdateStock is string = "UPDATE Produtos SET Estoque = Estoque - @QtdVendida WHERE ProdutoID = @ProdutoID" MultilinkSet("QtdVendida", 10) MultilinkSet("ProdutoID", 1001) MultilinkSQLExec(sqlUpdateStock)
// Gerar relatório de produtos atualizados sqlSelectRelatorio is string = "SELECT * FROM Produtos WHERE Estoque < 100" MultilinkSQLQuery(sqlSelectRelatorio)
// Salvar relatório como JSON sRelatorio is string = MultilinkDATA() fSaveText("RelatorioEstoque.json", sRelatorio)
Info("Relatório gerado com sucesso.") MultilinkEndConnect() ELSE Info(MultilinkMSG()) END
Explicação: O exemplo mostra como atualizar o estoque de produtos, subtraindo a quantidade vendida, e como gerar um relatório de cujo estoque está abaixo de 100 unidades, salvando-o em um arquivo JSON.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:31 |
Exemplo 19: Atualizando Informações de Clientes com Validação de Transações (C#)
using MultiLink;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { if (MSSQL_CLIENT.BEGIN_TRANSACTION()) { // Atualizar informações do cliente string updateCliente = "UPDATE Clientes SET Email = @Email WHERE ClienteID = @ClienteID"; MSSQL_CLIENT.SET("Email", "cliente@exemplo.com"); MSSQL_CLIENT.SET("ClienteID", 1234); if (MSSQL_CLIENT.SQL_EXEC(updateCliente)) { // Se a atualização foi bem-sucedida, commit na transação MSSQL_CLIENT.COMMIT_TRANSACTION(); Console.WriteLine("Informações do cliente atualizadas e transação confirmada."); } else { // Se houve erro, rollback MSSQL_CLIENT.ROLLBACK_TRANSACTION(); Console.WriteLine("Erro ao atualizar, transação revertida."); } MSSQL_CLIENT.END_CONNECT(); } } else { Console.WriteLine(MSSQL_CLIENT.MSG); } } }
Exemplo 20: Atualizando Informações de Clientes com Validação de Transações (WLanguage)
MultilinkConfigure("server", "user", "password", "database", True, True) IF MultilinkBeginConnect() THEN IF MultilinkBeginTransaction() THEN // Atualizar informações do cliente sqlUpdateCliente is string = "UPDATE Clientes SET Email = @Email WHERE ClienteID = @ClienteID" MultilinkSet("Email", "cliente@exemplo.com") MultilinkSet("ClienteID", 1234) IF MultilinkSQLExec(sqlUpdateCliente) THEN // Commit na transação MultilinkCommitTransaction() Info("Informações do cliente atualizadas e transação confirmada.") ELSE // Rollback na transação MultilinkRollbackTransaction() Info("Erro ao atualizar, transação revertida.") END MultilinkEndConnect() END ELSE Info(MultilinkMSG()) END
Explicação: Este exemplo mostra como usar transações para garantir que, ao atualizar dados de um cliente, a operação só será finalizada com sucesso (commit) se tudo ocorrer conforme o esperado. Em caso de erro, a transação é revertida (rollback).
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:32 |
Exemplo 21: Deletando Pedidos e Itens Relacionados com Transação (C#)
using MultiLink;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { if (MSSQL_CLIENT.BEGIN_TRANSACTION()) { // Deletar itens do pedido string deleteItens = "DELETE FROM Pedidos_Itens WHERE PedidoID = @PedidoID"; MSSQL_CLIENT.SET("PedidoID", 1001); if (MSSQL_CLIENT.SQL_EXEC(deleteItens)) { // Deletar pedido após deletar os itens string deletePedido = "DELETE FROM Pedidos WHERE PedidoID = @PedidoID"; MSSQL_CLIENT.SET("PedidoID", 1001); if (MSSQL_CLIENT.SQL_EXEC(deletePedido)) { MSSQL_CLIENT.COMMIT_TRANSACTION(); Console.WriteLine("Pedido e itens deletados com sucesso."); } else { MSSQL_CLIENT.ROLLBACK_TRANSACTION(); Console.WriteLine("Erro ao deletar pedido, transação revertida."); } } else { MSSQL_CLIENT.ROLLBACK_TRANSACTION(); Console.WriteLine("Erro ao deletar itens, transação revertida."); } MSSQL_CLIENT.END_CONNECT(); } } else { Console.WriteLine(MSSQL_CLIENT.MSG); } } }
Exemplo 22: Deletando Pedidos e Itens Relacionados com Transação (WLanguage) MultilinkConfigure("server", "user", "password", "database", True, True) IF MultilinkBeginConnect() THEN IF MultilinkBeginTransaction() THEN // Deletar itens do pedido sqlDeleteItens is string = "DELETE FROM Pedidos_Itens WHERE PedidoID = @PedidoID" MultilinkSet("PedidoID", 1001) IF MultilinkSQLExec(sqlDeleteItens) THEN // Deletar pedido sqlDeletePedido is string = "DELETE FROM Pedidos WHERE PedidoID = @PedidoID" MultilinkSet("PedidoID", 1001) IF MultilinkSQLExec(sqlDeletePedido) THEN MultilinkCommitTransaction() Info("Pedido e itens deletados com sucesso.") ELSE MultilinkRollbackTransaction() Info("Erro ao deletar pedido, transação revertida.") END ELSE MultilinkRollbackTransaction() Info("Erro ao deletar itens, transação revertida.") END MultilinkEndConnect() END ELSE Info(MultilinkMSG()) END
Explicação: Este exemplo mostra como realizar a exclusão de um pedido e seus itens associados em duas tabelas relacionadas usando o MultiLink . A transação garante que, caso qualquer uma das exclusões falhe, nenhuma alteração seja feita no banco de dados, mantendo a consistência.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:32 |
Exemplo 23: Atualizando Informações de Clientes e Transportadora com Transação (C#)
using MultiLink;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { if (MSSQL_CLIENT.BEGIN_TRANSACTION()) { // Atualizar informações de cliente string updateCliente = "UPDATE Clientes SET Nome = @Nome WHERE ClienteID = @ClienteID"; MSSQL_CLIENT.SET("Nome", "Novo Nome"); MSSQL_CLIENT.SET("ClienteID", 101); if (MSSQL_CLIENT.SQL_EXEC(updateCliente)) { // Atualizar informações de transportadora string updateTransportadora = "UPDATE Transportadora SET Telefone = @Telefone WHERE TransportadoraID = @TransportadoraID"; MSSQL_CLIENT.SET("Telefone", "9999-8888"); MSSQL_CLIENT.SET("TransportadoraID", 201); if (MSSQL_CLIENT.SQL_EXEC(updateTransportadora)) { MSSQL_CLIENT.COMMIT_TRANSACTION(); Console.WriteLine("Informações de cliente e transportadora atualizadas com sucesso."); } else { MSSQL_CLIENT.ROLLBACK_TRANSACTION(); Console.WriteLine("Erro ao atualizar transportadora, transação revertida."); } } else { MSSQL_CLIENT.ROLLBACK_TRANSACTION(); Console.WriteLine("Erro ao atualizar cliente, transação revertida."); } MSSQL_CLIENT.END_CONNECT(); } } else { Console.WriteLine(MSSQL_CLIENT.MSG); } } }
Exemplo 24: Atualizando Informações de Clientes e Transportadora com Transação (WLanguage)
MultilinkConfigure("server", "user", "password", "database", True, True) IF MultilinkBeginConnect() THEN IF MultilinkBeginTransaction() THEN // Atualizar informações do cliente sqlUpdateCliente is string = "UPDATE Clientes SET Nome = @Nome WHERE ClienteID = @ClienteID" MultilinkSet("Nome", "Novo Nome") MultilinkSet("ClienteID", 101) IF MultilinkSQLExec(sqlUpdateCliente) THEN // Atualizar informações da transportadora sqlUpdateTransportadora is string = "UPDATE Transportadora SET Telefone = @Telefone WHERE TransportadoraID = @TransportadoraID" MultilinkSet("Telefone", "9999-8888") MultilinkSet("TransportadoraID", 201) IF MultilinkSQLExec(sqlUpdateTransportadora) THEN MultilinkCommitTransaction() Info("Informações de cliente e transportadora atualizadas com sucesso.") ELSE MultilinkRollbackTransaction() Info("Erro ao atualizar transportadora, transação revertida.") END ELSE MultilinkRollbackTransaction() Info("Erro ao atualizar cliente, transação revertida.") END MultilinkEndConnect() END ELSE Info(MultilinkMSG()) END
Explicação: Esses exemplos mostram como usar o MultiLink para atualizar as informações de clientes e transportar de forma transacional. Caso uma das atualizações falhe, a transação é revertida, garantindo que os dados permaneçam consistentes.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:33 |
Exemplo 25: Inserindo Pedido com Itens e Impostos (C#)
using MultiLink;
class Program { static void Main() { MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { if (MSSQL_CLIENT.BEGIN_TRANSACTION()) { // Inserir pedido string insertPedido = "INSERT INTO Pedidos (ClienteID, DataPedido, TransportadoraID) VALUES (@ClienteID, @DataPedido, @TransportadoraID)"; MSSQL_CLIENT.SET("ClienteID", 123); MSSQL_CLIENT.SET("DataPedido", DateTime.Now); MSSQL_CLIENT.SET("TransportadoraID", 5); if (MSSQL_CLIENT.SQL_EXEC(insertPedido)) { // Recuperar ID do pedido recém inserido MSSQL_CLIENT.SQL_QUERY("SELECT SCOPE_IDENTITY() AS PedidoID"); int pedidoID = Convert.ToInt32(MSSQL_CLIENT.DATA);
// Inserir itens do pedido string insertItem = "INSERT INTO Pedidos_Itens (PedidoID, ProdutoID, Quantidade) VALUES (@PedidoID, @ProdutoID, @Quantidade)"; MSSQL_CLIENT.SET("PedidoID", pedidoID); MSSQL_CLIENT.SET("ProdutoID", 12); MSSQL_CLIENT.SET("Quantidade", 5); if (MSSQL_CLIENT.SQL_EXEC(insertItem)) { // Inserir impostos string insertImposto = "INSERT INTO Impostos (PedidoID, ImpostoID, Valor) VALUES (@PedidoID, @ImpostoID, @Valor)"; MSSQL_CLIENT.SET("PedidoID", pedidoID); MSSQL_CLIENT.SET("ImpostoID", 3); MSSQL_CLIENT.SET("Valor", 50); if (MSSQL_CLIENT.SQL_EXEC(insertImposto)) { MSSQL_CLIENT.COMMIT_TRANSACTION(); Console.WriteLine("Pedido e seus itens e impostos inseridos com sucesso."); } else { MSSQL_CLIENT.ROLLBACK_TRANSACTION(); Console.WriteLine("Erro ao inserir impostos, transação revertida."); } } else { MSSQL_CLIENT.ROLLBACK_TRANSACTION(); Console.WriteLine("Erro ao inserir itens, transação revertida."); } } else { MSSQL_CLIENT.ROLLBACK_TRANSACTION(); Console.WriteLine("Erro ao inserir pedido, transação revertida."); } MSSQL_CLIENT.END_CONNECT(); } } else { Console.WriteLine(MSSQL_CLIENT.MSG); } } }
Exemplo 26: Inserindo Pedido com Itens e Impostos (WLanguage)
MultilinkConfigure("server", "user", "password", "database", True, True) IF MultilinkBeginConnect() THEN IF MultilinkBeginTransaction() THEN // Inserir pedido insertPedido is string = "INSERT INTO Pedidos (ClienteID, DataPedido, TransportadoraID) VALUES (@ClienteID, @DataPedido, @TransportadoraID)" MultilinkSet("ClienteID", 123) MultilinkSet("DataPedido", Today()) MultilinkSet("TransportadoraID", 5) IF MultilinkSQLExec(insertPedido) THEN // Recuperar ID do pedido recém inserido MultilinkSQLQuery("SELECT SCOPE_IDENTITY() AS PedidoID") pedidoID is int = MultilinkDataGetInt(1) // Inserir itens do pedido insertItem is string = "INSERT INTO Pedidos_Itens (PedidoID, ProdutoID, Quantidade) VALUES (@PedidoID, @ProdutoID, @Quantidade)" MultilinkSet("PedidoID", pedidoID) MultilinkSet("ProdutoID", 12) MultilinkSet("Quantidade", 5) IF MultilinkSQLExec(insertItem) THEN // Inserir impostos insertImposto is string = "INSERT INTO Impostos (PedidoID, ImpostoID, Valor) VALUES (@PedidoID, @ImpostoID, @Valor)" MultilinkSet("PedidoID", pedidoID) MultilinkSet("ImpostoID", 3) MultilinkSet("Valor", 50) IF MultilinkSQLExec(insertImposto) THEN MultilinkCommitTransaction() Info("Pedido, itens e impostos inseridos com sucesso.") ELSE MultilinkRollbackTransaction() Info("Erro ao inserir impostos, transação revertida.") END ELSE MultilinkRollbackTransaction() Info("Erro ao inserir itens, transação revertida.") END ELSE MultilinkRollbackTransaction() Info("Erro ao inserir pedido, transação revertida.") END MultilinkEndConnect() END ELSE Info(MultilinkMSG()) END
Explicação: Esses exemplos mostram como usar o MultiLink para inserir um pedido com itens e impostos relacionados. Eles utilizam transações para garantir a consistência dos dados, revertendo a transação se qualquer uma das inserções falhar.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:34 |
Exemplo 27: Relacionando Pedidos, Itens, Impostos e Clientes (Cenário Complexo com Otimização de Desempenho) Objetivo: Criar uma operação que vincule pedidos, itens, impostos e cliente
Cenário: Um cliente realiza pedidos múltiplos, cada um com diversos itens e impostos associados. Este exemplo demonstra como realizar inserções de forma eficiente utilizando uma DLL MultiLink.
Código C# c sustenido
Copiar código using MultiLink;
class Program { static void Main() { // Configuração da conexão MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", true, true); if (MSSQL_CLIENT.BEGIN_CONNECT()) { if (MSSQL_CLIENT.BEGIN_TRANSACTION()) { try { // Inserir cliente string insertCliente = "INSERT INTO Clientes (Nome, Endereco) VALUES (@Nome, @Endereco)"; MSSQL_CLIENT.SET("Nome", "Cliente Exemplo"); MSSQL_CLIENT.SET("Endereco", "Rua Exemplo, 123");
if (!MSSQL_CLIENT.SQL_EXEC(insertCliente)) throw new Exception(MSSQL_CLIENT.MSG);
// Recuperar o ID do cliente inserido MSSQL_CLIENT.SQL_QUERY("SELECT SCOPE_IDENTITY() AS ClienteID"); int clienteID = Convert.ToInt32(MSSQL_CLIENT.DATA);
// Inserir pedido do cliente string insertPedido = "INSERT INTO Pedidos (ClienteID, DataPedido) VALUES (@ClienteID, @DataPedido)"; MSSQL_CLIENT.SET("ClienteID", clienteID); MSSQL_CLIENT.SET("DataPedido", DateTime.Now);
if (!MSSQL_CLIENT.SQL_EXEC(insertPedido)) throw new Exception(MSSQL_CLIENT.MSG);
// Recuperar o ID do pedido MSSQL_CLIENT.SQL_QUERY("SELECT SCOPE_IDENTITY() AS PedidoID"); int pedidoID = Convert.ToInt32(MSSQL_CLIENT.DATA);
// Inserir itens em lote string insertItens = @"INSERT INTO Pedidos_Itens (PedidoID, ProdutoID, Quantidade) VALUES (@PedidoID, @ProdutoID1, @Quantidade1), (@PedidoID, @ProdutoID2, @Quantidade2)"; MSSQL_CLIENT.SET("PedidoID", pedidoID); MSSQL_CLIENT.SET("ProdutoID1", 101); MSSQL_CLIENT.SET("Quantidade1", 2); MSSQL_CLIENT.SET("ProdutoID2", 102); MSSQL_CLIENT.SET("Quantidade2", 5);
if (!MSSQL_CLIENT.SQL_EXEC(insertItens)) throw new Exception(MSSQL_CLIENT.MSG);
// Inserir impostos em lote string insertImpostos = @"INSERT INTO Impostos (PedidoID, ImpostoID, Valor) VALUES (@PedidoID, @ImpostoID1, @Valor1), (@PedidoID, @ImpostoID2, @Valor2)"; MSSQL_CLIENT.SET("ImpostoID1", 1); MSSQL_CLIENT.SET("Valor1", 50); MSSQL_CLIENT.SET("ImpostoID2", 2); MSSQL_CLIENT.SET("Valor2", 30);
if (!MSSQL_CLIENT.SQL_EXEC(insertImpostos)) throw new Exception(MSSQL_CLIENT.MSG);
// Calcular o total por cliente string consulta = @"SELECT C.Nome, SUM(I.Valor) AS TotalImpostos FROM Clientes C JOIN Pedidos P ON C.ClienteID = P.ClienteID JOIN Impostos I ON P.PedidoID = I.PedidoID WHERE C.ClienteID = @ClienteID GROUP BY C.Nome"; MSSQL_CLIENT.SET("ClienteID", clienteID);
if (MSSQL_CLIENT.SQL_QUERY(consulta)) { Console.WriteLine(MSSQL_CLIENT.DATA); }
// Commit da transação MSSQL_CLIENT.COMMIT_TRANSACTION(); } catch (Exception ex) { MSSQL_CLIENT.ROLLBACK_TRANSACTION(); Console.WriteLine("Erro: " + ex.Message); } finally { MSSQL_CLIENT.END_CONNECT(); } } } } }
Descrição do código:
Configuração da Conexão: Configure as parâmetros de conexão com o banco de dados SQL Server utilizando uma DLL MultiLink. Inserção de Cliente: Um novo cliente está inserido na tabela Clientes. Recuperação do ID do Cliente: Após a inserção, o ID do cliente é recuperado para ser utilizado nas inserções subsequentes. Inserção de Pedido: Um pedido é inserido associado ao cliente. Recuperação do ID do Pedido: O ID do pedido é recuperado para uso posterior. Inserção de Itens: Os itens do pedido são inseridos no lote na tabela Pedidos_Itens. Inserção de Impostos: Os impostos correspondentes ao pedido são inseridos em lote na tabela Impostos. Consulta de Total: É realizada uma consulta para calcular o total de impostos do cliente, agrupando pelo nome Tratamento de Exceções: Caso ocorra algum erro durante o processo, a transação é revertida.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/Message modifié, 24 octobre 2024 - 15:40 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 24 octobre 2024 - 15:42 |
Exemplo 28: Em Wlanguage este exemplo é o relacionamento de Pedidos, Itens, Impostos e Clientes (Cenário Complexo com Otimização de Desempenho)
Objetivo: Criar uma operação que vincule pedidos, itens, impostos
Código WLanguage widioma
Copiar código // Configuração da conexão MSSQL_CLIENT.CONFIGURE("server", "user", "password", "database", True, True)
IF MSSQL_CLIENT.BEGIN_CONNECT() THEN IF MSSQL_CLIENT.BEGIN_TRANSACTION() THEN // Inserir cliente clienteQuery is string = "INSERT INTO Clientes (Nome, Endereco) VALUES (@Nome, @Endereco)" MSSQL_CLIENT.SET("Nome", "Cliente Exemplo") MSSQL_CLIENT.SET("Endereco", "Rua Exemplo, 123")
IF NOT MSSQL_CLIENT.SQL_EXEC(clienteQuery) THEN ERROR("Erro ao inserir cliente: " + MSSQL_CLIENT.MSG)
// Recuperar o ID do cliente inserido MSSQL_CLIENT.SQL_QUERY("SELECT SCOPE_IDENTITY() AS ClienteID") clienteID is int = Num(MSSQL_CLIENT.DATA)
// Inserir pedido do cliente pedidoQuery is string = "INSERT INTO Pedidos (ClienteID, DataPedido) VALUES (@ClienteID, @DataPedido)" MSSQL_CLIENT.SET("ClienteID", clienteID) MSSQL_CLIENT.SET("DataPedido", DateTimeSys())
IF NOT MSSQL_CLIENT.SQL_EXEC(pedidoQuery) THEN ERROR("Erro ao inserir pedido: " + MSSQL_CLIENT.MSG)
// Recuperar o ID do pedido MSSQL_CLIENT.SQL_QUERY("SELECT SCOPE_IDENTITY() AS PedidoID") pedidoID is int = Num(MSSQL_CLIENT.DATA)
// Inserir itens em lote itensQuery is string = "INSERT INTO Pedidos_Itens (PedidoID, ProdutoID, Quantidade) VALUES (@PedidoID, @ProdutoID1, @Quantidade1), (@PedidoID, @ProdutoID2, @Quantidade2)" MSSQL_CLIENT.SET("PedidoID", pedidoID) MSSQL_CLIENT.SET("ProdutoID1", 101) MSSQL_CLIENT.SET("Quantidade1", 2) MSSQL_CLIENT.SET("ProdutoID2", 102) MSSQL_CLIENT.SET("Quantidade2", 5)
IF NOT MSSQL_CLIENT.SQL_EXEC(itensQuery) THEN ERROR("Erro ao inserir itens: " + MSSQL_CLIENT.MSG)
// Inserir impostos em lote impostosQuery is string = "INSERT INTO Impostos (PedidoID, ImpostoID, Valor) VALUES (@PedidoID, @ImpostoID1, @Valor1), (@PedidoID, @ImpostoID2, @Valor2)" MSSQL_CLIENT.SET("ImpostoID1", 1) MSSQL_CLIENT.SET("Valor1", 50) MSSQL_CLIENT.SET("ImpostoID2", 2) MSSQL_CLIENT.SET("Valor2", 30)
IF NOT MSSQL_CLIENT.SQL_EXEC(impostosQuery) THEN ERROR("Erro ao inserir impostos: " + MSSQL_CLIENT.MSG)
// Calcular o total por cliente consultaQuery is string = "SELECT C.Nome, SUM(I.Valor) AS TotalImpostos " + "FROM Clientes C " + "JOIN Pedidos P ON C.ClienteID = P.ClienteID " + "JOIN Impostos I ON P.PedidoID = I.PedidoID " + "WHERE C.ClienteID = @ClienteID " + "GROUP BY C.Nome"
MSSQL_CLIENT.SET("ClienteID", clienteID)
IF MSSQL_CLIENT.SQL_QUERY(consultaQuery) THEN Info("Total de Impostos: " + MSSQL_CLIENT.DATA)
MSSQL_CLIENT.COMMIT_TRANSACTION() ELSE ERROR("Erro ao iniciar a transação: " + MSSQL_CLIENT.MSG) ELSE ERROR("Erro ao conectar ao banco: " + MSSQL_CLIENT.MSG)
MSSQL_CLIENT.END_CONNECT()
Descrição do código:
Configuração da Conexão: Configure as parâmetros de conexão com o banco de dados SQL Server utilizando uma DLL MultiLink. Inserção de Cliente: Um novo cliente está inserido na tabela Clientes. Recuperação do ID do Cliente: Após a inserção, o ID do cliente é recuperado para ser utilizado nas inserções subsequentes. Inserção de Pedido: Um pedido é inserido associado ao cliente. Recuperação do ID do Pedido: O ID do pedido é recuperado para uso posterior. Inserção de Itens: Os itens do pedido são inseridos no lote na tabela Pedidos_Itens. Inserção de Impostos: Os impostos correspondentes ao pedido são inseridos em lote na tabela Impostos. Consulta de Total: É realizada uma consulta para calcular o total de impostos do cliente, agrupando pelo nome do cliente. Tratamento de Exceções: Caso ocorra algum erro durante o processo, um erro é reportado.
Considerações Finais:
Este exemplo demonstra uma operação complexa envolvendo múltiplas tabelas e inserções em lote.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 26 octobre 2024 - 06:31 |
MultiLink ORACLE_CLIENT
Aqui está a documentação completa e detalhada para o ORACLE_CLIENT do MultiLink, cobrindo a funcionalidade, métodos e exemplos para uso em C# e WLanguage. Este documento foi criado para que desenvolvedores entendam o funcionamento e possam configurar conexões Oracle de diferentes maneiras (usando SID, TNS Name e Service Name), além de executar operações de transações e comandos SQL.
Visão Geral O ORACLE_CLIENT do MultiLink é uma classe projetada para facilitar a conexão e interação com um banco de dados Oracle usando o driver Oracle.ManagedDataAccess.Client. Ele oferece métodos para:
Configurar e estabelecer conexões com diferentes opções (SID, TNS Name, Service Name). Executar comandos SQL. Manipular transações. Configurar parâmetros de consulta. Requisitos Driver: Oracle.ManagedDataAccess.Client. Dependências: Oracle.ManagedDataAccess.dll, Newtonsoft.Json.dll (para conversão de resultados em JSON). Propriedades Principais MSG: Armazena mensagens de status ou erro das operações realizadas. DATA: Armazena o resultado das consultas SQL em formato JSON, facilitando o acesso aos dados retornados. Métodos Configuração da Conexão A classe ORACLE_CLIENT permite configurar a conexão com o banco de dados Oracle usando três métodos diferentes: SID, TNS Name e Service Name. Cada um dos métodos abaixo configura a ConnectionString da classe.
1. ConfigureWithSID Configura a conexão com o banco de dados Oracle usando SID.
Parâmetros: server (string): O endereço do servidor Oracle. port (string): A porta do servidor Oracle. sid (string): O SID do banco de dados. user (string): Nome de usuário para autenticação. password (string): Senha para autenticação. Exemplo de Uso C#:
csharp Copiar código ORACLE_CLIENT.ConfigureWithSID("myServer", "1521", "mySID", "myUser", "myPassword"); WLanguage:
wlanguage Copiar código ConfigureWithSID("myServer", "1521", "mySID", "myUser", "myPassword") 2. ConfigureWithTNSName Configura a conexão usando um TNS Name predefinido em tnsnames.ora.
Parâmetros: tnsAlias (string): Nome do alias configurado. user (string): Nome de usuário para autenticação. password (string): Senha para autenticação. Exemplo de Uso C#:
csharp Copiar código ORACLE_CLIENT.ConfigureWithTNSName("MyTNSAlias", "myUser", "myPassword"); WLanguage:
wlanguage Copiar código ConfigureWithTNSName("MyTNSAlias", "myUser", "myPassword") 3. ConfigureWithServiceName Configura a conexão com Service Name, que é uma alternativa ao SID.
Parâmetros: server (string): O endereço do servidor Oracle. port (string): A porta do servidor Oracle. serviceName (string): O Service Name do banco de dados. user (string): Nome de usuário para autenticação. password (string): Senha para autenticação. Exemplo de Uso C#:
csharp Copiar código ORACLE_CLIENT.ConfigureWithServiceName("myServer", "1521", "myServiceName", "myUser", "myPassword"); WLanguage:
wlanguage Copiar código ConfigureWithServiceName("myServer", "1521", "myServiceName", "myUser", "myPassword") Conexão e Desconexão com o Banco de Dados 4. BEGIN_CONNECT Estabelece a conexão com o banco de dados. Valida a licença e verifica se a configuração de conexão foi definida.
Retorno: (bool) true se a conexão for bem-sucedida, false caso contrário. Exemplo de Uso C#:
csharp Copiar código bool connected = ORACLE_CLIENT.BEGIN_CONNECT(); WLanguage:
wlanguage Copiar código bConnected = ORACLE_CLIENT:BEGIN_CONNECT() 5. END_CONNECT Encerra a conexão com o banco de dados.
Retorno: (bool) true se a desconexão for bem-sucedida. Exemplo de Uso C#:
csharp Copiar código bool disconnected = ORACLE_CLIENT.END_CONNECT(); WLanguage:
wlanguage Copiar código bDisconnected = ORACLE_CLIENT:END_CONNECT() Transações 6. BEGIN_TRANSACTION Inicia uma transação. Isso permite agrupar múltiplas operações que podem ser confirmadas ou revertidas.
Retorno: (bool) true se a transação for iniciada com sucesso. Exemplo de Uso C#:
csharp Copiar código bool transactionStarted = ORACLE_CLIENT.BEGIN_TRANSACTION(); WLanguage:
wlanguage Copiar código bTransactionStarted = ORACLE_CLIENT:BEGIN_TRANSACTION() 7. COMMIT_TRANSACTION Confirma a transação ativa no banco de dados.
Parâmetro:
autoRollbackIfFails (bool): Define se a transação deve ser revertida automaticamente em caso de erro. Retorno: (bool) true se a confirmação for bem-sucedida.
Exemplo de Uso C#:
csharp Copiar código bool committed = ORACLE_CLIENT.COMMIT_TRANSACTION(true); WLanguage:
wlanguage Copiar código bCommitted = ORACLE_CLIENT:COMMIT_TRANSACTION(True) 8. ROLLBACK_TRANSACTION Reverte a transação ativa.
Retorno: (bool) true se a reversão for bem-sucedida. Exemplo de Uso C#:
csharp Copiar código bool rolledBack = ORACLE_CLIENT.ROLLBACK_TRANSACTION(); WLanguage:
wlanguage Copiar código bRolledBack = ORACLE_CLIENT:ROLLBACK_TRANSACTION() Execução de Comandos SQL 9. SQL_EXEC Executa um comando SQL (sem retorno de dados). Este método é útil para operações como INSERT, UPDATE ou DELETE.
Parâmetro:
sql (string): A instrução SQL a ser executada. Retorno: (bool) true se o comando for executado com sucesso.
Exemplo de Uso C#:
csharp Copiar código bool executed = ORACLE_CLIENT.SQL_EXEC("INSERT INTO TableName (Col) VALUES (Value)"); WLanguage:
wlanguage Copiar código bExecuted = ORACLE_CLIENT:SQL_EXEC("INSERT INTO TableName (Col) VALUES (Value)") 10. SQL_QUERY Executa uma consulta SQL e armazena o resultado em DATA como JSON.
Parâmetro:
sql (string): A consulta SQL a ser executada. Retorno: (bool) true se a consulta for executada com sucesso.
Exemplo de Uso C#:
csharp Copiar código bool fetched = ORACLE_CLIENT.SQL_QUERY("SELECT * FROM TableName"); string data = ORACLE_CLIENT.DATA; // Resultados em JSON WLanguage:
wlanguage Copiar código bFetched = ORACLE_CLIENT:SQL_QUERY("SELECT * FROM TableName") sData = ORACLE_CLIENT.DATA // Resultados em JSON Definindo Parâmetros para Consultas 11. SET_PARAM Define um parâmetro para ser utilizado em uma consulta SQL.
Parâmetros: parameter (string): Nome do parâmetro. value (string): Valor do parâmetro. Exemplo de Uso C#:
csharp Copiar código ORACLE_CLIENT.SET_PARAM("paramName", "value"); WLanguage:
wlanguage Copiar código ORACLE_CLIENT:SET_PARAM("paramName", "value")
Resumo e Considerações Finais
O ORACLE_CLIENT do MultiLink oferece uma interface estruturada e robusta para gerenciar conexões, transações e executar comandos SQL em um banco de dados Oracle. Essa documentação fornece uma visão clara de como configurar e utilizar cada método. Com as funcionalidades descritas, o ORACLE_CLIENT simplifica o gerenciamento de conexões Oracle para desenvolvedores, com suporte para uso em diferentes ambientes de desenvolvimento (C# e WLanguage).
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 26 octobre 2024 - 06:35 |
Aqui estão os exemplos de conexão para C# e suas correspondentes implementações em WLanguage para cada tipo de conexão (SID, TNS Name, e Service Name) com o banco de dados Oracle.
1. Conexão usando SID Em C#
using Oracle.ManagedDataAccess.Client; public static void ConfigureWithSID(string server, string port, string sid, string user, string password) { OracleConnectionStringBuilder sb = new OracleConnectionStringBuilder { DataSource = $"{server}:{port}/{sid}", UserID = user, Password = password }; _connectionInfo = sb; }
Exemplo de Uso: csharp
ConfigureWithSID("myServer", "1521", "mySID", "myUser", "myPassword");
Em WLanguage wlanguage
PROCEDURE ConfigureWithSID(server is string, port is string, sid is string, user is string, password is string) DataSource = server + ":" + port + "/" + sid UserID = user Password = password Exemplo de Uso: wlanguage Copiar código ConfigureWithSID("myServer", "1521", "mySID", "myUser", "myPassword")
2. Conexão usando TNS Name Em C#
public static void ConfigureWithTNSName(string tnsAlias, string user, string password) { OracleConnectionStringBuilder sb = new OracleConnectionStringBuilder { DataSource = tnsAlias, UserID = user, Password = password }; _connectionInfo = sb; }
Exemplo de Uso: csharp
ConfigureWithTNSName("MyTNSAlias", "myUser", "myPassword");
Em WLanguage
PROCEDURE ConfigureWithTNSName(tnsAlias is string, user is string, password is string) DataSource = tnsAlias UserID = user Password = password Exemplo de Uso: wlanguage Copiar código ConfigureWithTNSName("MyTNSAlias", "myUser", "myPassword")
3. Conexão usando Service Name Em C#
public static void ConfigureWithServiceName(string server, string port, string serviceName, string user, string password) { OracleConnectionStringBuilder sb = new OracleConnectionStringBuilder { DataSource = $"//{server}:{port}/{serviceName}", UserID = user, Password = password }; _connectionInfo = sb; }
Exemplo de Uso: csharp
ConfigureWithServiceName("myServer", "1521", "myServiceName", "myUser", "myPassword");
Em WLanguage
PROCEDURE ConfigureWithServiceName(server is string, port is string, serviceName is string, user is string, password is string) DataSource = "//" + server + ":" + port + "/" + serviceName UserID = user Password = password
Exemplo de Uso: wlanguage
ConfigureWithServiceName("myServer", "1521", "myServiceName", "myUser", "myPassword")
Em Resumo Esses exemplos mostram como configurar a conexão tanto em C# quanto em WLanguage para acessar um banco de dados Oracle usando SID, TNS Name, ou Service Name.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 26 octobre 2024 - 06:36 |
Abaixo estão exemplos de conexões com diferentes tipos de configuração no driver Oracle.ManagedDataAccess.Client. Vou mostrar como configurar a ConnectionString para conectar-se usando SID, TNS Name e Service Name para Oracle.
1. Conexão usando SID Quando você conhece o SID do banco de dados Oracle, pode usar uma ConnectionString com o seguinte formato:
csharp
using Oracle.ManagedDataAccess.Client;
public static void ConfigureWithSID(string server, string port, string sid, string user, string password) { var sb = new OracleConnectionStringBuilder { DataSource = $"{server}:{port}/{sid}", UserID = user, Password = password }; _connectionInfo = sb; }
Exemplo de uso: csharp
ConfigureWithSID("myServer", "1521", "mySID", "myUser", "myPassword");
2. Conexão usando TNS Name Para usar um alias definido no arquivo tnsnames.ora, você só precisa configurar a propriedade DataSource para o nome do alias.
csharp Copiar código public static void ConfigureWithTNSName(string tnsAlias, string user, string password) { var sb = new OracleConnectionStringBuilder { DataSource = tnsAlias, UserID = user, Password = password }; _connectionInfo = sb; }
Exemplo de uso: csharp
ConfigureWithTNSName("MyTNSAlias", "myUser", "myPassword");
3. Conexão usando Service Name Ao conectar-se por Service Name, a ConnectionString segue o formato //<server>:<port>/<ServiceName>. Isso é útil quando o banco de dados possui um Service Name específico.
csharp
public static void ConfigureWithServiceName(string server, string port, string serviceName, string user, string password) { var sb = new OracleConnectionStringBuilder { DataSource = $"//{server}:{port}/{serviceName}", UserID = user, Password = password }; _connectionInfo = sb; }
Exemplo de uso: csharp
ConfigureWithServiceName("myServer", "1521", "myServiceName", "myUser", "myPassword");
Resumo dos Exemplos Cada um desses métodos cria uma configuração para conectar ao banco de dados Oracle usando as propriedades DataSource, UserID, e Password de acordo com o tipo de conexão. Esses exemplos podem ser chamados antes do método BEGIN_CONNECT() no código atual para estabelecer a conexão com o banco de dados Oracle usando o driver Oracle.ManagedDataAccess.Client.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 26 octobre 2024 - 06:40 |
Documentação para a Classe ORACLE_CLIENT - MultiLink
A classe ORACLE_CLIENT fornece métodos para gerenciar conexões, transações e execução de comandos SQL em um banco de dados Oracle. A classe inclui métodos para configurar a conexão, iniciar e encerrar a conexão, manipular transações, definir parâmetros e executar comandos SQL. A comunicação com o banco de dados é feita usando a biblioteca Oracle.ManagedDataAccess.Client.
Propriedades MSG: (string) Mantém uma mensagem de status relacionada às operações realizadas. DATA: (string) Armazena os resultados da consulta SQL como JSON. Métodos
1. CONFIGURE Configura as informações de conexão para o banco de dados Oracle.
Parâmetros:
server (string): O endereço do servidor Oracle. user (string): Nome de usuário do banco de dados. password (string): Senha do banco de dados. Exemplo:
C#:
csharp
ORACLE_CLIENT.CONFIGURE("myserver", "myuser", "mypassword"); WLanguage:
wlanguage
ORACLE_CLIENT:CONFIGURE("myserver", "myuser", "mypassword")
2. BEGIN_CONNECT Estabelece a conexão com o banco de dados.
Retorno: (bool) true se a conexão for bem-sucedida, caso contrário, false.
Exemplo:
C#:
bool connected = ORACLE_CLIENT.BEGIN_CONNECT(); WLanguage:
bConnected = ORACLE_CLIENT:BEGIN_CONNECT()
3. END_CONNECT Encerra a conexão com o banco de dados Oracle.
Retorno: (bool) true se a desconexão for bem-sucedida.
Exemplo:
C#:
bool disconnected = ORACLE_CLIENT.END_CONNECT();
WLanguage:
bDisconnected = ORACLE_CLIENT:END_CONNECT()
4. BEGIN_TRANSACTION Inicia uma transação no banco de dados.
Retorno: (bool) true se a transação for iniciada com sucesso.
Exemplo:
C#:
bool transactionStarted = ORACLE_CLIENT.BEGIN_TRANSACTION();
WLanguage:
bTransactionStarted = ORACLE_CLIENT:BEGIN_TRANSACTION()
5. COMMIT_TRANSACTION Confirma a transação ativa.
Parâmetro:
autoRollbackIfFails (bool, opcional): Se true, reverte automaticamente a transação em caso de falha. Retorno: (bool) true se a confirmação for bem-sucedida.
Exemplo:
C#:
bool committed = ORACLE_CLIENT.COMMIT_TRANSACTION(true);
WLanguage:
bCommitted = ORACLE_CLIENT:COMMIT_TRANSACTION(True)
6. ROLLBACK_TRANSACTION Reverte a transação ativa.
Retorno: (bool) true se a reversão for bem-sucedida.
Exemplo:
C#:
bool rolledBack = ORACLE_CLIENT.ROLLBACK_TRANSACTION();
WLanguage:
bRolledBack = ORACLE_CLIENT:ROLLBACK_TRANSACTION()
7. SET_PARAM Define um parâmetro para ser utilizado em uma consulta SQL.
Parâmetros:
parameter (string): O nome do parâmetro. value (string): O valor do parâmetro. Exemplo:
C#:
ORACLE_CLIENT.SET_PARAM("paramName", "value");
WLanguage:
ORACLE_CLIENT:SET_PARAM("paramName", "value")
8. SQL_EXEC Executa um comando SQL (sem retorno de dados).
Parâmetro:
sql (string): A instrução SQL a ser executada. Retorno: (bool) true se o comando for executado com sucesso.
Exemplo:
C#:
bool executed = ORACLE_CLIENT.SQL_EXEC("INSERT INTO TableName (Col) VALUES (Value)");
WLanguage:
bExecuted = ORACLE_CLIENT:SQL_EXEC("INSERT INTO TableName (Col) VALUES (Value)")
9. SQL_QUERY Executa uma consulta SQL e armazena o resultado em DATA como JSON.
Parâmetro:
sql (string): A consulta SQL a ser executada. Retorno: (bool) true se a consulta for executada com sucesso.
Exemplo:
C#:
bool fetched = ORACLE_CLIENT.SQL_QUERY("SELECT * FROM TableName"); string data = ORACLE_CLIENT.DATA; // Resultados em JSON
WLanguage:
bFetched = ORACLE_CLIENT:SQL_QUERY("SELECT * FROM TableName") sData = ORACLE_CLIENT.DATA // Resultados em JSON
EM RESUMO Esses exemplos e descrições podem servir como documentação de referência para os desenvolvedores, permitindo o uso tanto em C# quanto em WLanguage. Se precisar de uma formatação adicional para um formato de documento, como PDF ou HTML, estou à disposição para ajustar.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 23 novembre 2024 - 17:12 |
//EXEMPLO COM TRANSACTION
POSTGRESQL_CLIENT.CONFIGURE("localhost",15432,"postgres","123456","postgres","public") // configuracao da conexao (pode ser feito 1x no start do app) IF POSTGRESQL_CLIENT.BEGIN_CONNECT() THEN // abrir conexao POSTGRESQL_CLIENT.BEGIN_TRANSACTION() // inicia a transacao // operações com várias tabelas confirmado is boolean = POSTGRESQL_CLIENT.COMMIT_TRANSACTION(True) // commit com rollback automatico se falha // se optar por chamar .COMMIT_TRANSACTION(False) // então deve controlar a chamada de .ROLLBACK_TRANSACTION() manualmente // ex.: // POSTGRESQL_CLIENT.ROLLBACK_TRANSACTION() // desfaz todas as alterações feitas desde BEGIN_TRANSACTION() POSTGRESQL_CLIENT.END_CONNECT() // Se nao fechar a conexão o banco vai travar com o tempo !!! ELSE Info(POSTGRESQL_CLIENT.MSG) END
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 23 novembre 2024 - 17:13 |
//EXEMPLO DE INSERT E UPDATE
POSTGRESQL_CLIENT.CONFIGURE("localhost",15432,"postgres","123456","postgres","public") // configuracao da conexao (pode ser feito 1x no start do app) IF POSTGRESQL_CLIENT.BEGIN_CONNECT() THEN // abrir conexao // exemplo de insert/update com parametros seguros // NÃO FAÇA concatenações na string da query interpolando os parametros // NAO É SEGURO!!! // Use PARAMETROS como mostrado abaixo POSTGRESQL_CLIENT.SET("@nome", "Valor Seguro") POSTGRESQL_CLIENT.SET("@telefone", "Valor Seguro") POSTGRESQL_CLIENT.SET("@email", "Valor Seguro") // a funcao SQL_EXEC é ppara insert/update/funcoes administrativas do BD atualizado is boolean = POSTGRESQL_CLIENT.SQL_EXEC("Insert (ou update) into Tabela (Nome, Telefone, Email) values (@nome, @telefone, @email") IF atualizado THEN // deu certo ELSE msgErro is string = POSTGRESQL_CLIENT.MSG // recupera a msg de erro END POSTGRESQL_CLIENT.END_CONNECT() // Se nao fechar a conexão o banco vai travar com o tempo !!! ELSE Info(POSTGRESQL_CLIENT.MSG) END
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 23 novembre 2024 - 17:13 |
//SELECT RETORNA JSON
POSTGRESQL_CLIENT.CONFIGURE("localhost",15432,"postgres","123456","postgres","public") // configuracao da conexao (pode ser feito 1x no start do app) IF POSTGRESQL_CLIENT.BEGIN_CONNECT() THEN // abrir conexao POSTGRESQL_CLIENT.SQL_QUERY("select * from clientes") // funcao de leitura com retorno JSON resultado is Variant = POSTGRESQL_CLIENT.DATA // <- acess os dados de retorno assim mensagem is string = POSTGRESQL_CLIENT.MSG // <- acesse mensagens de erro ou info assim // fazer uso dos dados ou enviar para tela... POSTGRESQL_CLIENT.END_CONNECT() // Se nao fechar a conexão o banco vai travar com o tempo !!! ELSE Info(POSTGRESQL_CLIENT.MSG) END
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 23 novembre 2024 - 17:14 |
//SELECT COM RETORNO DATA SORCE RECORD SET
POSTGRESQL_CLIENT.CONFIGURE("localhost",15432,"postgres","123456","postgres","public") IF POSTGRESQL_CLIENT.BEGIN_CONNECT() THEN // abrir conexao
// esse exemplo mostra a funcao de query com leitura sequencial // essa modalidade permite uma leitura muito mais rapida dos dados // pois a leitura é feita no nivel do Result-Set da query POSTGRESQL_CLIENT.SQL_QUERY_SEQ("select * from clientes") // funcao de leitura via result-set (iteração direta) WHILE POSTGRESQL_CLIENT.TEM_LINHAS() // avança linha
valId is string= POSTGRESQL_CLIENT.VAL_COLUNA(0) // ordem das colunas no result da query valNome is string = POSTGRESQL_CLIENT.VAL_COLUNA(1)
ToastDisplay(valId +CR+ valNome ) // fazer uso dos dados ou enviar para tela END
POSTGRESQL_CLIENT.END_CONNECT() // Se nao fechar a conexão o banco vai travar com o tempo !!!
ELSE Info(POSTGRESQL_CLIENT.MSG) END
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 758 messages |
|
Posté le 23 novembre 2024 - 17:24 |
| |
| |
| | | |
|
| | | | |
| | |
|