Artigo Clube Delphi Edição 47 - Top 15 do InterBase/Firebird

Artigo da Revista Clube Delphi Edição 47.

Esse artigo faz parte da revista Clube Delphi edição 47. Clique aqui para ler todos os artigos desta edição

Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

Top-15 do InterBase/Firebird

Dúvidas mais freqüentes e suas soluções

Sendo o mantenedor de uma das maiores listas de discussão sobre InterBase/ Firebird  de todo o mundo (www.firebase.com.br), sempre vejo surgirem dúvidas que se repetem com freqüência. Organizei neste artigo as 15 mais comuns entre os usuários de IB/FB, para ajudar os que estão começando a resolver, seus problemas, ou mesmo aqueles que têm uma certa intimidade com esses bancos de dados.

1) Como utilizar caracteres acentuados?

Devemos fazer uso dos charsets e collates disponíveis no IB/FB. São eles que permitem ao administrador do banco de dados (DBA) indicar ao banco quais os caracteres que serão aceitos nos campos alfanuméricos, tanto globalmente (em nível de BD) ou individualmente para cada campo.

São dois os charsets indicados para utilização com o português: ISO8859_1 e WIN1252. Não se engane com este último, apesar do nome sugerir que seja um charset para Windows, ele está disponível em todas as versões do IB/FB para todos os sistemas operacionais suportados – inclusive o Linux. Cada charset possui um conjunto de collates, os quais dizem ao BD como deve comparar os caracteres ou realizar uma ordenação. Ou seja, o collate determina como as palavras “Joao” e “João”, por exemplo, serão ordenadas ou comparadas entre si.

Para o charset ISO8859_1, devemos utilizar o collate PT_PT; já para o charset WIN1252 devemos utilizar o PXW_INTL850. Sempre recomendo o uso deste último par (WIN1252/PXW_INTL850) pois o collate PT_PT tem certos efeitos indesejados na ordenação: ele desconsidera os espaços em branco, fazendo com que algumas ordenações fiquem um tanto quanto “esquisitas”.

O charset pode ser definido globalmente para todo o banco indicando-o durante a criação do BD, como no exemplo a seguir:

 

CREATE DATABASE 'c:\banco.fdb'

USER 'SYSDBA' PASSWORD 'masterkey'

PAGE_SIZE 4096

DEFAULT CHARACTER SET WIN1252;

 

Ou pode ser definido em cada campo, por exemplo:

 

CREATE TABLE TABELA(

  CAMPO1 VARCHAR(10) CHARACTER SET WIN1252 COLLATE PXW_INTL850,

  CAMPO2 VARCHAR(10) CHARACTER SET ISO8859_1 COLLATE PT_PT);

2) Por que obtenho o erro "arithmetic exception, numeric overflow, or string truncation"?

Esse" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados