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:
Chaves que identificam o driver de conexão:
Para PostgreSQL 8.2.5:
Para FireBird:
Para MSSQL:
Para Oracle:
Para MySQL:
Para DB2:
Para ODBC:
Chaves que identificam a URL de conexão:
Para PostgreSQL:
Para FirereBird:
Para MSSQL:
Para Oracle:
Para MySQL:
Para DB2:
Para ODBC:
Chave que identifica o usuário:
Chave que identifica o Servidor:
Para Interbase e Firebird:
Para MSSQL, Oracle e PostgreSQL:
Chave que executa o comando Commit:
Chave que executa o CommitClausule:
Chave que executa o TrimString:
Chave que executa o FetchSize:
Chave que executa o TimeOut:
Chave que executa o Generator:
Para PostgresSQL
Para FireBird
Para MSSQL
Para Oracle
Para DB2
Chave que executa o ExceptionPrimaryKey:
Para PostgresSQL
Para FireBird
Para MSSQL
Para Oracle:
Para MySQL:
Para DB2:
Chave que executa o ExceptionForeignKey;
Para PostgresSQL:
Para FireBird:
Para MSSQL:
Para Oracle:
Para MySQL:
Para DB2:
Chave que executa o AppendSQL4MetaData;
Para PostgreSQL:
Para MSSQL:
Para Oracle:
Para MySQL:
Para DB2:
Chave que executa o ModifySQL4MetaData:
Para MSSQL:
Chave que executa o Autoinc (autoincremento):
Para PostgresSQL:
Chave que executa o AutoincSupport:
Para MySQL, DB2:
Chave que executa o CaseSensitive:
Para PostgresSQL e FireBird:
Chave que executa o SchemaField:
Para PostgresSQL:
Chave que executa o Schema:
Para PostgresSQL:
Chave que executa o InsertOnStarSQL4MetaData:
Para Oracle:
Chave que executa o ConcatOperator:
Para MySQL:
<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".
____________________________________________________________________________
Caso este tópico não tenha comentário satisfatório, envie e-mail para [email protected]