Arquivo DATABASES.XML

 

As declarações das chaves de conexão encontram-se nas tags <group>. Este arquivo está composto pelas chaves de conexão com os bancos de dados que o Webrun suporta.

 

Cada banco de dados possui a sua própria sintaxe de chaves e particularidades nas configurações. O Webrun lê o conteúdo do arquivo *.wfre e substitui as informações nas chaves. Por exemplo:

 

image675.jpg

 

<item>

<item-param>org.postgresql.Driver</item-param>

</item>

 

<item>

<item-param>org.firebirdsql.jdbc.FBDriver</item-param>

</item>

 

<item>

<item-param>net.sourceforge.jtds.jdbc.Driver</item-param>

</item>

 

<item>

<item-param>oracle.jdbc.driver.OracleDriver</item-param>

</item>

 

<item>

<item-param>com.mysql.jdbc.Driver</item-param>

</item>

<item>

<item-param>com.ibm.db2.jcc.DB2Driver</item-param>

</item>

<item>

<item-param>sun.jdbc.odbc.JdbcOdbcDriver</item-param>

</item>

 

<item>

<item-param>jdbc:postgresql://$HostName$:$Port$/$DataBase$</item-param>

</item>

 

<item>

<item-param> jdbc:firebirdsql:$Database$?lc_ctype=$ServerCharSet$</item- param>

</item>

 

<item>

<item-param>:jtds:sqlserver://$HostName$:1433/$DataBase$;charset=iso-8859-1;useLOBs=false;sendStringParametersAsUnicode=false;useCursors=true</item-param>

</item>

 

<item>

<item-param>jdbc:oracle:thin:@$DataBase$</item-param>

</item>

 

<item>

<item-param>jdbc:mysql://$HostName$/$DataBase$</item-param>

</item>

 

<item>

<item-param>jdbc:db2j:net://$HostName$:50000/$DataBase$</item-param>

</item>

 

<item>

<item-param>sun.jdbc.odbc.JdbcOdbcDriver</item-param>

</item>

 

O formato é o mesmo para todos os bancos:

<item>

<item-name>UserField</item-name>

<item-param>User_Name</item-param>

</item>

 

<item>

<item-param>Database</item-param>

</item>

 

<item>

<item-param>HostName</item-param>

</item>

 

O Webrun abre uma transação para cada vez que o formulário estiver no modo de inserção, exclusão ou edição, e é verificado tudo que ocorreu dentro da transação. Havendo algum erro, é dado um rollback. O parâmetro pode ser configurado com o valor 0 ou 1. Se o valor for 1, significa que toda vez que for feita alguma transação, o Webrun dará um Commit. Segue abaixo um exemplo que é o mesmo para todos os bancos de dados:

<item>

<item-name>AutoCommit</item-name>

<item-param>1</item-param>

</item>

 

Significa que a cláusula do Commit (confirmação) fecha todos os Datasets (fonte de dados). Se houver o Retain (reter) vai manter as fontes de dados abertas, nas quais manterão a transação. Este recurso é disponível apenas para FireBird:

<item>

<item-name>CommitClausule</item-name>

<item-param>COMMIT RETAIN</item-param>

</item>

 

Caso o driver de conexão do banco de dados coloque caracteres especiais, utilizando o valor 1 para o parâmetro, o Webrun executará TrimString removendo os caracteres especiais (retirando todos os espaços, caracteres de tabulação, quebra de linha no começo e no  final):

<item>

<item-name>TrimString</item-name>

<item-param>1</item-param>

</item>

 

Configura a quantidade de registros para o cash do servidor, quando abrir uma consulta com um formulário. Pega a primeira página de dados do servidor que fica guardada na memória. Este parâmetro é disponível para todos os bancos de dados:

<item>

<item-name>FetchSize</item-name>

<item-param>100</item-param>

</item>

 

Solicita uma conexão de abertura de um formulário. O Webrun fica tentando abrir, aguardando até que o banco de dados retorne com os dados. Por padrão, vem com o valor 1, significando que fica aguardando indefinidamente até que o banco de dados retorne com algum erro. Este parâmetro é utilizado para todos os bancos de dados:

<item>

<item-name>TimeOut</item-name>

<item-param>-1</item-param>

</item>

 

O caractere @ que é colocado na frente do Valor-Padrão ou no Dicionário de Dados. É detectável pelo Webrun, que será obtido pelo URL, ao inserir do formulário:

<item>

<item-name>Generator</item-name>

<item-param>SELECT NEXTVAL('$generator$')</item-param>

</item>

 

<item>

<item-param>SELECT GEN_ID($generator$,1) FROM RDB$DATABASE</item-param>

</item>

 

<item>

<item-param>DECLARE @AUTOINC INT EXEC SP_GEN_ID '$generator$', 1, @AUTOINC OUT SELECT @AUTOINC</item-param>

</item>

 

<item>

<item-param>SELECT $generator$.NEXTVAL FROM dual</item-param>

</item>

 

<item>

<item-param>SELECT NEXTVAL FOR $generator$ FROM SYSIBM.DUAL</item-param>

</item>

 

Identificação do PrimaryKey é verificado por exemplo, se existe outro usuário com o mesmo ID. Caso o banco de dados seja diferente do idioma inglês, será necessário que faça alteração:

<item>

<item-name>ExceptionPrimaryKey</item-name>

<item-param>unique constraint</item-param>

</item>

 

<item>

<item-param>violation of PRIMARY</item-param>

<item-param>UNIQUE KEY</item-param>

</item>

 

<item>

<item-param>Violation of PRIMARY</item-param>

<item-param>duplicate key</item-param>

<item-param>UNIQUE KEY</item-param>

</item>

 

<item>

<item-param>ORA-00001</item-param>

<item-param>ORA-01400</item-param>

</item>

 

<item>

<item-param>Duplicate entry</item-param>

</item>

 

<item>

<item-param>DB2 SQL error: SQLCODE: -803</item-param>

</item>

 

Identificação do ForeingKey é verificado, por exemplo, se existe outro usuário com o mesmo ID. Caso o banco de dados seja diferente da língua inglesa será necessário que faça alteração no arquivo.

<item>

<item-name>ExceptionForeignKey</item-name>

<item-param>foreign key constraint</item-param>

</item>

 

<item>

<item-param>violation of FOREIGN KEY</item-param>

</item>

 

<item>

<item-param>REFERENCE constraint</item-param>

<item-param>FOREIGN KEY constraint</item-param>

<item-param>COLUMN REFERENCE constraint</item-param>

<item-param>foreign key constraint</item-param>

</item>

 

<item>

<item-param>ORA-02291</item-param>

<item-param>ORA-02292</item-param>

</item>

 

<item>

<item-param>foreign key constraint</item-param>

</item>

 

<item>

<item-param>DB2 SQL error: SQLCODE: -532</item-param>

</item>

 

<item>

<item-name>AppendSQL4MetaData</item-name>

<item-param>LIMIT 0</item-param>

</item>

 

<item>

<item-param>FOR BROWSE</item-param>

</item>

 

<item>

<item-param>) where (rownum < 1)</item-param>

</item>

 

<item>

<item-param>LIMIT 0,0</item-param>

</item>

 

<item>

<item-param>FETCH FIRST 1 ROWS ONLY</item-param>

</item>

 

Atributo para quando extrair dados de um select, cada banco tem a sua particularidade para obter informações de metadados. Exemplo: para um banco de dados que tenha 6 mil registros com esse atributo, retorna a nenhum resultado, para não se tornar lento.

<item>

<item-name>ModifySQL4MetaData</item-name>

<item-param>top 0</item-param>

</item>

 

<item>

<item-name>Autoinc</item-name>

<item-param>SELECT CURRVAL('$table$_$field$_seq')</item-param>

</item>

 

<item>

<item-name>AutoincSupport</item-name>

<item-param>1</item-param>

</item>

 

Caso tenha essa propriedade, é necessário que o desenvolvedor respeite a particularidade do banco.

<item>

<item-name>CaseSensitive</item-name>

<item-param>1</item-param>

</item>

 

Parâmetro do *.Wfre do Schema.

<item>

<item-name>SchemaField</item-name>

<item-param>RoleName</item-param>

</item>

Para a definição de regras de validação, caso o driver não passe como padrão, pode-se configurar o Schema, colocando uma sintaxe SQL para definir.

<item>

<item-name>Schema</item-name>

<item-param>SET search_path=$schema$</item-param>

</item>

 

Inserir depois da cláusula select.

<item>

<item-name>InsertOnStarSQL4MetaData</item-name>

<item-param>select * from (</item-param>

</item>

 

Operador de concatenação.

<item>

<item-name>ConcatOperator</item-name>

<item-param>||</item-param>

</item>

 

Uma vez instalado o databases.xml, o atualizador automático não o altera, e por isso, é criado o databases.dist para receber as atualizações. Isso ocorre para quando o usuário fizer alguma alteração e queira retornar às configurações.

 

CheckSQLCommand no datatabase.xml

Caso o usuário esteja logado e, por algum motivo, a conexão do banco cair, é possível continuar sem a necessidade de logar novamente no banco, mas o banco de dados deve estar ativo.

 

Para que o Webrun restabeleça essa conexão, use "CheckSQLCommand" no databases.xml e defina uma consulta. Por exemplo: para o banco de dados MySQL, "SELECT 1".

 

 

 

____________________________________________________________________________

image776.jpg

Caso este tópico não tenha comentário satisfatório, envie e-mail para documentacao@softwell.com.br