Arquivo da categoria: banco de dados

mysql no slackware 12.2

o mysql já vem instalado no slackware, falta apenas ativa-lo =)

vamos aos passos:

1. criar o banco de dados do mysql

# mysql_install_db

2. mudar o dono e o grupo dos arquivos do mysql:

# chown -R mysql.mysql /var/lib/mysql/

3. dar permissão de execução ao serviço:

# chmod +x /etc/rc.d/rc.mysqld

4. iniciar o serviço:

# /etc/rc.d/rc.mysqld start

5. pronto, mysql funcionando. o ideal é que a senha padrão seja alterada:

# mysqladmin -u root password sua_senha

criando uma trigger com exceção em mysql

estou começando a usar o mysql -ainda demoro muito pra fazer um simples script- e não sabia como parar uma trigger por erro, como faço com o exception no firebird.

no firebird seria:

if (quantidade <= 0) then
  exception nome_da_excecao 'quantidade inválida';

descobri que no mysql fica:

if (quantidade <= 0) then
  call fail('quantidade inválida');
end if;

ah! também aprendi a declarar variáveis:

create trigger minha_trigger before insert on tabela for each row begin
  declare variavel integer;

instalando os componentes zeos no delphi 2007

O ZeosLib é um conjunto de componentes para bano de dados MySQL, PostgreSQL, Interbase, Firebird, MS SQL, Sybase, Oracle e SQLite para Delphi, FreePascal/Lazarus, Kylix e C Builder.

Detalhes do projeto:

  • Administradores do projeto: frank_linde, markdaems, miseeger
  • Desenvolvedores: 16
  • Licença: GNU General Public License (GPL), GNU Library ou Licença Pública Menos Geral (LGPL )
  • Sistema Operacional: Todos os 32-bit MS Windows (95/98/NT/2000/XP), Todos os POSIX (Linux/BSD/UNIX-like SO), Linux
  • Linguagem de Programação: C, Delphi/Kylix

Instalando o Zeos:

  1. Descompacte o arquivo e abra o grupo de projetos ZeosDbo.groupproj na pasta .\packages\delphi11;
  2. Vá no menu Project > Compile All Projects;
  3. No Project Manager, abra o menu suspenso de ZComponentDesign110.bpl e selecione Install
  4. Componentes instalados, agora falta incluir o diretório dos arquivos compilados (.dcu) no Library path (menu Tools > Options > Environment Options > Delphi Options > Library – Win32)

Gostei bastante dos componentes, pelo pouco que testei. Farei uns testes comparando sua velocidade e praticidade em relação a outros componentes, e postarei os resultados

conectando-se ao firebird através do zebedee

O Zebedee cria conexões seguras entre duas máquinas, criptografando e comprimindo os dados (por TCP/IP ou UDP). Aqui eu usarei para me conectar ao Firebird. Precisei disso quando fui conectar os servidores de duas lojas para replicação de dados.

Você também achou estranho o nome do programa né?.. Vem daqui:
Zlib, biblioteca para compressão de dados;
Blowfish, algorítimo para criptografia;
Diffie-Hellman, controle de chaves de segurança.

Z, B e D dá ZeBeDee

Vamos la, baixa ele aí.

Legendas…

detached (true, false) = mostrar/ocultar mensagens
ipmode (tcp, udp ou both) = cumunicação por tcp/udp
compression = nível da compressão
keylength = tamanho (em bits) máximo das chaves de criptografia do blowfish
keygenlevel = nível de segurança nas chaves privadas (entre 0 e 2)
redirect none = desliga os redirecionamentos

Agora no diretório que ele foi instalado temos o arquivo “server.zbd”

detached true # mostrar (true) ou ocultar (false) mensagens
server true
ipmode tcp # cumunicação por “tcp”, “udp” ou “both”
compression zlib:9 # nível da compressão
keylength 256 # tamanho (wm bits) máximo das chaves de criptografia do blowfish
keygenlevel 2 # nível de segurança nas chaves privadas (entre 0 e 2)
redirect none # desliga os redirecionamentos
target localhost:3050 # destino, IP:porta

# target, onde o zebedee achará o firebird.
# Se o servidor zebedee for também o servidor firebird,
# o target será o “localhost”, ou “127.0.0.1”.
# A porta padrão do firebird é a 3050.

No computador cliente criaremos o arquivo “client.zbd”

detached false
server false
ipmode tcp
compression zlib:9
keylength 256
keygenlevel 2
maxbufsize 16383
listenip localhost
serverhost meuservidor.no-ip.org # ip/dns do servidor
tunnel 3051:localhost:3050

# serverhost, ip/dns do seu servidor zebedee. Este é o IP na internet.
# Logo, você terá que saber o IP da sua conexão,
# ou usar um serviço de DNS estático (dica, usa o no-ip).

# tunnel,
# 3051 (porta que você usará na string de conexão ao firebird) : localhost :
# 3050 (porta de destino no servidor, a porta padrão do firebird)

Certo, configuramos o zebedee. Agora falta executa-lo, manualmente ou criando os serviços no windows

  1. Para executar os comandos abaixo, abra o prompt (cmd)
  2. Digita “cd\arquiv~1\zebedee” (sem aspas) para entrar no diretorório do zebedee, que pode mudar conforme sua escolha na instalação.

executando manualmente o servidor:

zebedee -f server.zbd

executando manualmente o cliente:

zebedee -f client.zbd

instalando o serviço no servidor:

zebedee -n “Zebedee Server Service” “-Sinstall=c:\arquiv~1\zebedee\server.zbd”

instalando o serviço no cliente:

zebedee -n “Zebedee Client Service” “-Sinstall=c:\arquiv~1\zebedee\client.zbd”

Lembrando que esses dois últimos comandos referem-se apenas à instalação do serviço, a sua execução ocorrerá automaticamente na reinicialização do pc ou entrando no gerenciador de serviços (“Painel de controle / Ferramentas administrativas / Serviços” ou execute (Win + R) “services.msc”).

Agora temos o Zebedee funcionando no servidor e no cliente, e o Firebird também né!? Agora vamos abrir um banco de dados:

localhost/3051:C:\caminho_no_servidor\banco_de_dados.fdb

Essa é a string para a conexão com o firebird.

Observação importante que tinha esquecido, e por isso estou editando o post:

  1. No servidor zebedee, não esqueça de liberar a porta 11965 (a porta padrão do zebedee)
  2. No máquina cliente, não esqueça de liberar a porta 3051 (a que usamos acima)
  3. Se a sua conexão no servidor zebedee for através de um modem roteado você terá que redirecionar a porta 11965 para ele (isso merece um post)

E Pronto, não usei o controle de chaves de acesso púbicas e privadas. Fica pra próxima..

Fonte de consulta:

Site oficial do zebedee

Manual oficial do zebedee

Artigo na Comunidade Firebird de Língua Portuguesa, por Artur Trindade Anjos

Zebedee: Criando um túnel seguro entre máquinas no vivaolinux, por Antonio Tadeu

udf’s do firebird pelo delphi

Estava eu precisando criar uma função no firebird que me retornasse uma data, e isso deu trabalho.. pesquisei várias vezes, mas pouco encontrei. bem, até encontrei algumas páginas, mas essas eram muitas vezes traduções de umas páginas da codegear (essa ou essa), e que não estavam me esclarecendo muito não.. nesses exemplos é explicada a criação de quatro funções, módulo (retorna o resto de uma divisão), left (pegar os primeiros n caracteres de uma string), year e hour (retornar o ano e a hora de uma variável date e time respectivamente).

Até a função do módulo tudo funcionou corretamente, mas já a partir da função left a coisa começou a desandar. chega uma parte em que são declaradas variáveis do tipo ulong e o autor não menciona de onde isso vem, ou eu não vi mesmo relendo vários vezes. o maior problemas mesmo é com variáveis date.

Consegui fazer o que queria depois de baixar umas udf’s e fuçar os seus fontes. basicamente usei apenas a “freeudf otimizada por paulo henrique albanez” (linque original) que baixei na comunidade-firebird.org.

Nesse arquivo zipado existem os arquivos ib_externals.pas e ibase.pas. neles estão as declarações e transformações necessárias para que você crie uma udf com certa facilidade, basta coloca-los na seção uses da sua unit.

As variáveis contendo texto deverão ser tratadas com pchar, as datas como pisc_quad, as inteiras como integer mesmo, mas deverão ser declaradas com var.

Na unit da dll, no delphi:

uses
SysUtils, Classes,
ib_externals, ibase, { deve estar no search path ou no diretório, do projeto (dll)}
{$IFDEF WIN32}
Windows;
{$ELSE}
Types;
{$ENDIF}

//*** variáveis contendo datas ***
function fUltDia(ib_date: PISC_QUAD) :PISC_QUAD; cdecl; export;

//*** variáveis contendo textos e valores inteiros ***
function fLength(sz: PChar): Integer; cdecl; export;

implementation

Declaração da udf no banco de dados:

declare external function udf_ultdia
Date
returns Date
entry_point ‘fUltDia’ module_name ‘gsibfuncoes’;

declare external function udf_Length
cstring(32767)
returns integer by value
entry_point ‘fLength’ module_name ‘gsibfuncoes’;

DLL que fiz
Outras UDF’s