SQLJ
SQLJ
Universidade Federal de Campina Grande Disciplina: Banco de Dados I Professor: Cludio de Souza Baptista Estagirio: Elvis Rodrigues da Silva
http://www.lsi.dsc.ufcg.edu.br/
Roteiro
Introduo Sintaxe Inicial Comandos avanados Requisitos Referncias
Introduo (1 de 5)
SQLJ uma tecnologia que permite a um programa Java acessar um banco de dados utilizando statements SQL embutidos Arquivo fonte termina com .sqlj Manipulaes SQLJ
Meta informaes: Create, Alter, Drop Dados: Select, Insert, Update, Open, Fetch Controle de Transaes: Commit, Rollback
Introduo (2 de 5)
SQLJ no pode ser compilado diretamente pelo compilador Java Soluo: usar um tradutor
SQLJ Translator
Introduo (3 de 5)
O tradutor verifica erros de sintaxe e semnticos na instruo SQL em tempo de traduo:
Nomes incorretos Checagem de tipos Verifica se o comando SQL est de acordo com o Banco de Dados Etc.
Introduo (4 de 5)
A IDE Oracle JDeveloper reconhece a sintaxe de SQLJ para o banco de dados Oracle, mas possvel utilizar outros compiladores O IBM Websphere tambm possui compatibilidade com SQLJ para o banco de dados IBM DB2
Introduo (5 de 5)
Vantagens de SQLJ sobre JDBC (comandos estticos)
Cdigo-fonte reduzido Checagem de tipos SQL via conexo Associao de variveis em um nico comando Checagem de tipos de parmetros e retorno antes da execuo
Desvantagens
Um passo a mais no processamento: traduo de sqlj para java
Exemplo:
Iterator
Declaraes que definem classes iterator Usado para receber os resultados de consultas
Context
Usado para criar uma conexo ao Banco de Dados
positional iterators
A funo connect() simplifica o processo de criao e usa uma instncia da classe DefaultContext
tradutor
class MyCheckedIter extends sqlj.runtime.ref.ResultSetIterImpl implements sqlj.runtime.NamedIterator{ public String ITEM_NAME(){} public Double COST(){} }
Exemplo:
#sql iterator EmpIter implements mypackage.EmpIterIntfc (String emame, int empno, float sal);
Erro de compilao
O default OUT se a varivel parte de uma lista INTO ou em um statement SET e IN caso contrrio
Sensitivity um atributo da interface sqlj.runtime.ResultSetIterator with sempre deve vir aps implements
ou
ctx.getConnection().setAutoCommit(true);
Durante a traduo: INSERT INTO emp VALUES (10, 20, 30); Durante a execuo: INSERT INTO new_Emp VALUES (10, 20, 30);
Requisitos (1 de 2)
Para rodar um programa SQLJ precisamos de:
Um driver JDBC Um SQLJ translator:
[Oracle Home]/sqlj/lib/translator.zip (ou .jar)
Um SQLJ runtime:
runtime11.jar, runtime12. jar, runtime. jar, runtime-nonoracle. jar
Requisitos (2 de 2)
Procedimentos para rodar um programa SQLJ:
Colocar todos os .jar necessrios no classpath Editar o path para a pasta [Oracle Home]/bin/ Criar o arquivo .sqlj Executar o comando:
sqlj nome_arq.sqlj
Executar o programa
Java nome_arq
Referncias Referncias
Manuais da Oracle
http://www.oracle.com/technology/documentation/in dex.html
Tutoriais na Web:
http://www.onjava.com/pub/ct/46 http://www.javaworld.com/javaworld/jw-051999/jw-05-sqlj_p.html http://www.javaolympus.com/J2SE/Database/SQLJ/ SQLJ.jsp
Leitura recomendada: Java Programming with Oracle SQLJ, Jason Price, OReilly