Olá! Estou a ter problemas com a obtenção de dados de um base de dados
O codigo que estou a utlizar é:
import java.sql.*;
/**
*
* @author Nothunt
*/
public class Main {
/** Creates a new instance of Main */
public Main() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
java.sql.Connection conn = null;
String xt;
Statement st;
String i="1";
String tipo = "0";
String user ="user";
String pass = "pass";
String nome = "nome";
String apel = "apel";
int typeuser=1;
int userid=0;
String userna= "Nothunt";
String pass1="291782989";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@RAGE:1521:NOPROBLE","Nothunt","a291782989");
CallableStatement cs3 = conn.prepareCall("{call AUTENTICA_UTILIZADOR1(?,?,?,?,?,?,?,?)}");
cs3.setString(1,userna);
cs3.setString(2,pass1);
cs3.setString(3,i);
cs3.setString(4,tipo);
cs3.setString(5,user);
cs3.setString(6,pass);
cs3.setString(7,nome);
cs3.setString(8,apel);
cs3.execute();
cs3.registerOutParameter(3,Types.VARCHAR);
cs3.registerOutParameter(4,Types.VARCHAR);
cs3.registerOutParameter(5,Types.VARCHAR);
cs3.registerOutParameter(6,Types.VARCHAR);
cs3.registerOutParameter(7,Types.VARCHAR);
cs3.registerOutParameter(8,Types.VARCHAR);
ResultSet rs3 = cs3.executeQuery();
//user = rs3.getString(4);
typeuser=(int)cs3.getInt(2);
userid=(int)cs3.getInt(3);
user = (String) cs3.getObject(4);
pass = (String) cs3.getObject(5);
nome = (String) cs3.getObject(6);
apel = (String) cs3.getObject(7);
System.out.println("resultado-1: "+typeuser);
System.out.println("resultado0: "+userid);
System.out.println("resultado1: "+user);
System.out.println("resultado2: "+pass);
System.out.println("resultado3: "+nome);
System.out.println("resultado4: "+apel);
while(rs3.next()) {
tipo = rs3.getString(2);
user = rs3.getString(3);
pass = rs3.getString(4);
nome = rs3.getString(5);
apel = rs3.getString(6);
System.out.print("tipo: "+tipo);
System.out.print("user: "+user);
System.out.print("pass: "+pass);
System.out.print("nome: "+nome);
System.out.print("apel: "+apel);
}
conn.close();
}
catch(Exception e){System.out.println(e.getClass().getName() + ": " + e.getMessage());} // TODO code application logic here
// TODO code application logic here
}
}
para o procedimento:
PROCEDURE AUTENTICA_UTILIZADOR1
(
AUTVARINUSERNAME IN UTILIZADORES.USERNAME%TYPE,
AUTVARINPASSWORD IN UTILIZADORES.PASSWORD%TYPE,
AUTVAROUTIDUTILIZADOR OUT UTILIZADORES.ID_UTILIZADOR%TYPE,
AUTVAROUTIDTUTILIZADOR OUT UTILIZADORES.ID_TIPO_UTILIZADOR%TYPE,
AUTVAROUTUSERNAME OUT UTILIZADORES.USERNAME%TYPE,
AUTVAROUTPASSWORD OUT UTILIZADORES.PASSWORD%TYPE,
AUTVAROUTNOUTILIZADOR OUT UTILIZADORES.NOME_UTILIZADOR%TYPE,
AUTVAROUTAPUTILIZADOR OUT UTILIZADORES.APELIDO_UTILIZADOR%TYPE
)
AS
BEGIN
SELECT UTILIZADORES.ID_UTILIZADOR,
UTILIZADORES.ID_TIPO_UTILIZADOR,
UTILIZADORES.USERNAME,
UTILIZADORES.PASSWORD,
UTILIZADORES.NOME_UTILIZADOR,
UTILIZADORES.APELIDO_UTILIZADOR
INTO
AUTVAROUTIDUTILIZADOR,
AUTVAROUTIDTUTILIZADOR,
AUTVAROUTUSERNAME,
AUTVAROUTPASSWORD,
AUTVAROUTNOUTILIZADOR,
AUTVAROUTAPUTILIZADOR
FROM UTILIZADORES
WHERE AUTVARINUSERNAME = USERNAME AND
AUTVARINPASSWORD = PASSWORD;
END;
como resultado obtenho:
" avairaiveis de saida não foram declaradas"
podem ajudar-me?
sem mais os melhores cumprimentos