Arquivo DATABASES.XML

Manual do Maker 2

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:

      <item>

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

      </item>

    • Para FireBird:

      <item>

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

      </item>

    • Para MSSQL:

      <item>

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

      </item>

    • Para Oracle:

      <item>

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

      </item>

    • Para MySQL:

      <item>

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

      </item>

    • Para DB2:

      <item>

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

      </item>

    • Para ODBC:

      <item>

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

      </item>

  • Chaves que identificam a URL de conexão:

    • Para PostgreSQL:

    • <item>

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

      </item>

    • Para FirereBird:

    • <item>

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

      </item>

    • Para MSSQL:

    • <item>

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

      </item>

    • Para Oracle:

    • <item>

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

      </item>

    • Para MySQL:

    • <item>

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

      </item>

    • Para DB2:

    • <item>

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

      </item>

    • Para ODBC:

    • <item>

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

      </item>

  • Chave que identifica o usuário:

    • O formato é o mesmo para todos os bancos:

      <item>

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

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

      </item>

  • Chave que identifica o Servidor:

    • Para Interbase e Firebird:

    • <item>

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

      </item>

    • Para MSSQL, Oracle e PostgreSQL:

    • <item>

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

      </item>

  • Chave que executa o comando Commit:

    • 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>

  • Chave que executa o CommitClausule:

    • 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>

  • Chave que executa o TrimString:

    • 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>

  • Chave que executa o FetchSize:

    • 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>

  • Chave que executa o TimeOut:

    • 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>

  • Chave que executa o Generator:

    • 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:

    • Para PostgresSQL

    • <item>

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

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

      </item>

    • Para FireBird

    • <item>

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

      </item>

    • Para MSSQL

    • <item>

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

      </item>

    • Para Oracle

    • <item>

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

      </item>

    • Para DB2

    • <item>

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

      </item>

  • Chave que executa o ExceptionPrimaryKey:

    • 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:

    • Para PostgresSQL

    • <item>

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

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

      </item>

    • Para FireBird

    • <item>

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

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

      </item>

    • Para MSSQL

    • <item>

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

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

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

      </item>

    • Para Oracle:

    • <item>

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

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

      </item>

    • Para MySQL:

    • <item>

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

      </item>

    • Para DB2:

    • <item>

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

      </item>

  • Chave que executa o ExceptionForeignKey;

    • 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.

    • Para PostgresSQL:

    • <item>

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

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

      </item>

    • Para FireBird:

    • <item>

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

      </item>

    • Para MSSQL:

    • <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>

    • Para Oracle:

    • <item>

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

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

      </item>

    • Para MySQL:

    • <item>

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

      </item>

    • Para DB2:

    • <item>

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

      </item>

  • Chave que executa o AppendSQL4MetaData;

    • Para PostgreSQL:

    • <item>

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

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

      </item>

    • Para MSSQL:

    • <item>

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

      </item>

    • Para Oracle:

    • <item>

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

      </item>

    • Para MySQL:

    • <item>

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

      </item>

    • Para DB2:

    • <item>

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

      </item>

  • Chave que executa o ModifySQL4MetaData:

    • 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.

    • Para MSSQL:

    • <item>

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

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

      </item>

  • Chave que executa o Autoinc (autoincremento):

    • Para PostgresSQL:

    • <item>

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

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

      </item>

  • Chave que executa o AutoincSupport:

    • Para MySQL, DB2:

    • <item>

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

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

      </item>

  • Chave que executa o CaseSensitive:

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

    • Para PostgresSQL e FireBird:

    • <item>

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

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

      </item>

  • Chave que executa o SchemaField:

    • Parâmetro do *.Wfre do Schema.

    • Para PostgresSQL:

    • <item>

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

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

      </item>

  • Chave que executa o Schema:

    • 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.

    • Para PostgresSQL:

    • <item>

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

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

      </item>

  • Chave que executa o InsertOnStarSQL4MetaData:

    • Inserir depois da cláusula select.

    • Para Oracle:

    • <item>

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

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

      </item>

  • Chave que executa o ConcatOperator:

    • Operador de concatenação.

    • Para MySQL:

    • <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]