Jump to content

[Resolvido]JSP + ODBC


alexvaz
 Share

Recommended Posts

Oi ppl. Tenho uma página com um formulário para registar um utilizador e dp a ideia é metê-lo numa base de dados access que tb já está criada, bem como o seu ODBC. Mas quando tento por lá o utilizador aparece-me a seguinte mensagem:

java.sql.SQLException: [Microsoft][Controlador Microsoft Access de ODBC] Poucos parâmetros. 2 esperado.

Algém sabe o que será???

Link to comment
Share on other sites

Bem, o código é muito... mas aqui vai. Espero kalguém tenha coragem para o ver :)

--->Este é o JSP do formulário:

<%@ page errorPage="error.jsp" %>
<%@page import="CEPKG.*"%>

<%
String mensagem="";
if(request.getParameter("result") != null){
	mensagem="Utilizador já existe! Escolha outro Username! ";
}

   // se já fez login, tem que fazer logout para se poder registar
User cliente= new User();
if((cliente = (User) session.getAttribute("cliente"))!=null){
	session.removeAttribute("cliente");	
	session.invalidate();
}
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Language" content="pt">
<title>Pet-Sitting</title>
<style>

</style>
</head>

<body>

<table border="1" width="100%" id="table1" height="112%" style="border-width: 0px">
<tr>
	<td width="144" height="181" style="border-style: none; border-width: medium">
	<img border="0" src="Imagens/logo.jpg" width="150" height="182"></td>
	<td height="181" style="border-style: none; border-width: medium">
	<p class="MsoNormal" align="center" style="text-align:center"><b>
	<span style="line-height: 150%; font-family: Arial Black">
	<font size="5">Pet-Sitting</font></span></b></p>
	<p class="MsoNormal" align="center" style="text-align:center"><b>
	<span style="line-height: 150%; font-family: Arial Black">
	<font size="5">e</font></span></b></p>
	<p class="MsoNormal" align="center" style="text-align:center"><b>
	<span style="line-height: 150%; font-family: Arial Black">
	<font size="5">Venda de Produtos para Animais</font></span></b></p>
 </td>
</tr>
<tr>
	<td height="30" style="border-style: none; border-width: medium" colspan="2" bgcolor="#0099FF">

      	<table border="1" width="100%" id="table3" style="border-width: 0px">
		<tr>
			<td style="border-style: none; border-width: medium"><p align="left"><strong><font size="4">Bem Vindo</font></strong><i></i></p></td>
			<td style="border-style: none; border-width: medium"><p align="right"><strong><%=Data.hoje()%></strong> </p></td>
		</tr>
	</table>
	</td>
</tr>
<tr>
	<td width="144" style="border-left-style:none; border-left-width:medium; border-top-style:none; border-top-width:medium; border-bottom-style:none; border-bottom-width:medium">
	<table border="1" width="100%" id="table2" style="border-width: 0px">
		<tr>
			<td onclick="location.assign('index.jsp')" style="border: 1px solid #000000; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px" bgcolor="#0099FF">
			<p align="center"><b><font size="5">Início</font></b></td>
		</tr>
		<tr>
			<td onclick="location.assign('registar.jsp')" style="border: 1px solid #000000; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px" bgcolor="#0099FF">
			<p align="center"><b><font size="5" color="#FFFF66">Registo</font></b></td>
		</tr>
		<tr>
			<td onclick="location.assign('login.jsp')" style="border: 1px solid #000000; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px" bgcolor="#0099FF">
			<p align="center"><b><font size="5">Login</font></b></td>
		</tr>
		<tr>
			<td onclick="location.assign('produtos.jsp')" style="border: 1px solid #000000; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px" bgcolor="#0099FF">
			<p align="center"><b><font size="5">Produtos</font></b></td>
		</tr>
		<tr>
			<td onclick="location.assign('petsitting.jsp')" style="border: 1px solid #000000; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px" bgcolor="#0099FF">
			<p align="center"><b><font size="5">Pet-Sitting</font></b></td>
		</tr>
		<tr>
			<td onclick="location.assign('info.jsp')" style="border: 1px solid #000000; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px" bgcolor="#0099FF">
			<p align="center"><b><font size="5">Informações</font></b></td>
		</tr>
		<tr>
			<td onclick="location.assign('contactos.jsp')" style="border: 1px solid #000000; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px" bgcolor="#0099FF">
			<p align="center"><b><font size="5">Contactos</font></b></td>
		</tr>
	</table>
	</td>

    <td style="border-left:1px solid #0066FF; padding-left:4px; padding-right:4px; padding-top:1px; padding-bottom:1px; border-right-style:none; border-right-width:medium; border-top-style:none; border-top-width:medium; border-bottom-style:none; border-bottom-width:medium" height="100%">
 
<p align="center"><font face="Arial" size="4">
<b>
<%=mensagem%>
Introduza os Seus Dados:
</b></font></p>
<form method="POST" action="registar.jsp">
<table border="1" width="100%" id="table4" style="border-width: 0px">
	<tr>
		<td align="right" style="border-style: none; border-width: medium">
			<b>Nome:
		</b>
		</td>
		<td style="border-style: none; border-width: medium">
		<p align="left">
			<input type="text" name="Nome" size="40">
		</td>
	</tr>
	<tr>
		<td align="right" style="border-style: none; border-width: medium">
			<b>Morada:
		</b>
		</td>
		<td style="border-style: none; border-width: medium">
		<p align="left">
			<input type="text" name="Morada" size="50">
		</td>
	</tr>
	<tr>
		<td align="right" style="border-style: none; border-width: medium">
			<b>Código Postal:
		</b>
		</td>
		<td style="border-style: none; border-width: medium">
		<p align="left">
			<input type="text" name="Cpostal" size="8">
		</td>
	</tr>
	<tr>
		<td align="right" style="border-style: none; border-width: medium">
			<b>Localidade:
		</b>
		</td>
		<td style="border-style: none; border-width: medium">
		<p align="left">
			<input type="text" name="Localidade" size="30">
		</td>
	</tr>
	<tr>
		<td align="right" style="border-style: none; border-width: medium">
			<b>E-Mail:
		</b>
		</td>
		<td style="border-style: none; border-width: medium">
		<p align="left">
			<input type="text" name="Email" size="25">
		</td>
	</tr>
	<tr>
		<td align="right" style="border-style: none; border-width: medium">
			<b>Nº. de Telefone:
		</b>
		</td>
		<td style="border-style: none; border-width: medium">
		<p align="left">
			<input type="text" name="Telefone" size="9">
		</td>
	</tr>
	<tr>
		<td align="right" style="border-style: none; border-width: medium">
			<b>Nº. de Contribuinte:
		</b>
		</td>
		<td style="border-style: none; border-width: medium">
		<p align="left">
			<input type="text" name="Ncontribuinte" size="9">
		</td>
	</tr>
	<tr>
		<td align="right" style="border-style: none; border-width: medium">
			<b>Login:
		</b>
		</td>
		<td style="border-style: none; border-width: medium">
		<p align="left">
			<input type="text" name="Login" size="20">
		</td>
	</tr>
	<tr>
		<td align="right" style="border-style: none; border-width: medium">
			<b>Password:
		</b>
		</td>
		<td style="border-style: none; border-width: medium">
		<p align="left">
			<input type="password" name="Password" size="20">
		</td>
	</tr>
	<tr>
		<td align="right" style="border-style: none; border-width: medium">
			<b>Confirme a Password:
		</b>
		</td>
		<td style="border-style: none; border-width: medium">
		<p align="left">
			<input type="password" name="ConfPassword" size="20">
		</td>
	</tr>
	<tr>
		<td align="right" style="border-style: none; border-width: medium"> 
			</td>
		<td style="border-style: none; border-width: medium">
			<input type="submit" value="Submeter" name="B1">
		</td>
	</tr>

		</table>
</form>
	</td>
</tr>
</table>

</body>

</html>


--->Este é o JSP que escreve na base de dados:

<%@ page errorPage="error.jsp" %>
<%@page import="CEPKG.*"%>
<jsp:useBean id="dbapi" class="CEPKG.DBAPI" scope="session" />
<jsp:useBean id="userManager" class="CEPKG.UserManager" scope="request" />

<%
userManager.setDBAPI(dbapi);
User cliteste = new User();

//testa se o cliente já existe

if ((cliteste=userManager.getUser(request.getParameter("Login")))==null){
User cliente = new User();
cliente.setNome(request.getParameter("Nome"));
cliente.setMorada(request.getParameter("Morada"));
cliente.setCpostal(request.getParameter("Cpostal")); 
cliente.setLocalidade(request.getParameter("Localidade")); 
cliente.setEmail(request.getParameter("Email")); 
cliente.setTelefone(request.getParameter("Telefone"));
cliente.setNcontribuinte(request.getParameter("Ncontribuinte")); 
cliente.setLogin(request.getParameter("Login"));
cliente.setPassword(request.getParameter("Password"));

userManager.addUser(cliente);

   session.setAttribute("cliente", cliente);
   %> <meta HTTP-EQUIV="REFRESH" CONTENT="0; URL=index.jsp"> <%
}

else {%>
	<meta HTTP-EQUIV="REFRESH" CONTENT="0; URL=registo.jsp?result=jaexiste">
<% }%>


-->Este é o bean UserManager

package CEPKG;

import java.io.*;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.*;
import java.util.*;


/**<p>Title: UserManager </p>
* <p>Description: Efectua a gestãotodas das operações sobre utilizadores</p>
* <p>Copyright: Copyright (c) Luís Cláudio Barradas 2003 </p>
* <p>Company: ESTCB </p>
* @author Luís Cláudio Barradas
* @version 1.0
*/


public class UserManager implements Serializable{

    private transient DBAPI dbapi;
    
//-------------------------------------------------------------------------------------------------------
/**<p>Construtor por defeito</p>
* @param Não tem  
* @exception Não são geradas excepções
*/
    public UserManager(){dbapi = null;}
    
//-------------------------------------------------------------------------------------------------------
/**<p>Define a API para ligação às Bases de dados  </p>
* @param dbapi API para ligação às Bases de dados  
* @exception Não são geradas excepções
*/
    public void setDBAPI(DBAPI dbapi){this.dbapi = dbapi;}
    
    
/**<p>Devolce a API para ligação às Bases de dados  </p>
* @return dbapi API para ligação às Bases de dados  
* @exception Não são geradas excepções
*/
    public DBAPI getDBAPI(){return dbapi;}
    
//-------------------------------------------------------------------------------------------------------

/**<p>Autentica um utilizador</p>
	* @param login Login do Utilizador
	* @param password Password do utilizador
	* @return usr Informação sobre utilizador
* @exception Exception
*/

    public User autenticar(String login, String password)throws Exception {

       String sql = "SELECT nome,morada,cpostal,localidade,email,telefone,ncontribuinte,login,password FROM Cliente WHERE Login='" + login + "'" 
				 + "AND Cliente.Password='" + password + "'"; 


/*	PreparedStatement p = dbapi.getConnection().prepareStatement("select * from cliente");
    System.out.println(p.toString());
  */  
        ResultSet rs = dbapi.Query(sql);
        if(rs.next()){
		User usr = new User();
		usr.setNome(rs.getString(1));
		usr.setMorada(rs.getString(2));
		usr.setCpostal(rs.getString(3)); 
		usr.setLocalidade(rs.getString(4)); 
		usr.setEmail(rs.getString(5)); 
		usr.setTelefone(rs.getString(6));
		usr.setNcontribuinte(rs.getString(7)); 
		usr.setLogin(rs.getString(8));
		usr.setPassword(rs.getString(9));
	    rs.getStatement().close();
            return usr;
        } else
        {
            rs.getStatement().close();
            return null;
        }
   }

//-------------------------------------------------------------------------------------------------------

/**<p>Adiciona um novo cliente</p>
	* @param user Informação pessoal do novo cliente 
	* @exception Exception
*/

   public void addUser(User user)throws Exception{
       
        String sql = "INSERT INTO Cliente (Nome, Morada, Cpostal, Localidade, Email, Telefone, Ncontribuinte, Login, Password) VALUES ( '" 
		          + user.getNome()         	+ "', '" 
				  + user.getMorada()       	+ "', '"  
		          + user.getCpostal()	  	+ "', '" 
		          + user.getLocalidade()	+ "', '"  
		          + user.getEmail()	        + "', '" 
		          + user.getTelefone()      + "', '"  
				  + user.getNcontribuinte()	+ "', '" 
		          + user.getLogin()         + "', '"  
		          + user.getPassword()      + "'" +")"; 
		          
	dbapi.Update(sql);

   }

//-------------------------------------------------------------------------------------------------------

/**<p>Modifica a infor,ação pessoal de um cliente</p>
	* @param user Informação pessoal cliente 
	* @exception Exception
*/

    public void editUser(User user) throws Exception {
        String sql = "UPDATE Cliente SET  Nome = '" + user.getNome()    + "' , "
				 + "Morada = '"		+ user.getMorada()				+ "' , "
	             + "Cpostal = '"	+ user.getCpostal()				+ "' , "
	             + "Localidade = '"	+ user.getLocalidade()			+ "' , "
				 + "Email = '"		+ user.getEmail()				+ "' , "
				 + "Telefone = '"	+ user.getTelefone()			+ "' , "
				 + "Ncontribuinte = '"+ user.getNcontribuinte()		+ "' , "				 
				 + "WHERE Cliente.Login = '"   + user.getLogin()	+  "' " ;



	dbapi.Update(sql);
    }
    
//-------------------------------------------------------------------------------------------------------

/**<p>Obtem a informação Pessoal de um cliente</p>
	* @param login Login cliente 
	* @return usr Informação Pessoal do cliente
	* @exception Exception
*/

    public User getUser(String login) throws Exception {

    				
    String sql = "SELECT nome,login,password,morada,localidade,cpostal,ncont,email,datanasc FROM Cliente WHERE Login='" + login + "'"; 

        ResultSet rs = dbapi.Query(sql);
        if(rs.next()) {
		User usr = new User();
		usr.setNome(rs.getString(1));
		usr.setMorada(rs.getString(2));
		usr.setCpostal(rs.getString(3)); 
		usr.setLocalidade(rs.getString(4)); 
		usr.setEmail(rs.getString(5)); 
		usr.setTelefone(rs.getString(6));
		usr.setNcontribuinte(rs.getString(7)); 
		usr.setLogin(rs.getString(8));
		usr.setPassword(rs.getString(9));
            rs.getStatement().close();
            return usr;
        } else
        {
            rs.getStatement().close();
            return null;
        }
    }
//-------------------------------------------------------------------------------------------------------

/**<p>Obtem a listagem de todos os clientes</p>
	*  
	* @return listagem listagem de clientes
	* @exception Exception
*/  

   public Vector getAllUsers() throws Exception {


       String sql = "SELECT nome,morada,cpostal,localidade,email,telefone,ncontribuinte,login,password FROM Cliente ORDER BY Nome ASC";
   	   	Vector listagem= new Vector();	
        ResultSet rs = dbapi.Query(sql);
        while(rs.next()) {
		User usr = new User();
		usr.setNome(rs.getString(1));
		usr.setMorada(rs.getString(2));
		usr.setCpostal(rs.getString(3)); 
		usr.setLocalidade(rs.getString(4)); 
		usr.setEmail(rs.getString(5)); 
		usr.setTelefone(rs.getString(6));
		usr.setNcontribuinte(rs.getString(7)); 
		usr.setLogin(rs.getString(8));
		usr.setPassword(rs.getString(9));
          	listagem.add(usr);
          	
    	}
       	rs.getStatement().close();
     	return listagem;
        
    }


public void setDbapi(DBAPI dbapi) {
	this.dbapi = dbapi; 
}

public DBAPI getDbapi() {
	return (this.dbapi); 
}
//-------------------------------------------------------------------------------------------------------

}


--->Este é o bean DBAPI

package CEPKG;

import java.io.Serializable;
import java.sql.*;


public class DBAPI implements Serializable {

    private transient Connection con;
    
//-------------------------------------------------------------------------------------------------------

/**<p>Construtor</p>
* @param Não tem
* @exception ClassNotFoundException
* @exception SQLException
*/
    public DBAPI() throws ClassNotFoundException, SQLException{
        createConnection();
    }
    
   //-------------------------------------------------------------------------------------------------------
    public Connection getConnection() throws ClassNotFoundException, SQLException{
       return con;
    }
//-------------------------------------------------------------------------------------------------------

/**<p>Estabelece a ligação à base de dados </p>
* @param Não tem
* @exception ClassNotFoundException 
* @exception SQLException
*/

    private synchronized void createConnection()
  throws ClassNotFoundException, SQLException{

        if(con == null || con.isClosed()){
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            con = DriverManager.getConnection("jdbc:odbc:TrabCE");
        }
    }
    
//-------------------------------------------------------------------------------------------------------

/**<p>Obtém dados provenientes da base de dados, mediante uma Query SQL </p>
* @param sql Query SQl
* @return rs Dados provenientes da Bases de Dados
* @exception ClassNotFoundException
* @exception SQLException
*/

    public synchronized ResultSet Query(String sql)
        throws ClassNotFoundException, SQLException{

        createConnection();
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(sql);
        return rs;
    }

//-------------------------------------------------------------------------------------------------------

/** <p> Obtém dados provenientes da base de dados, mediante uma Query SQL </p>
* @param sql Query SQl
* @return ret Resultado da operação
* @exception ClassNotFoundException
* @exception SQLException
*/
    public synchronized int Update(String sql)
        throws ClassNotFoundException, SQLException{

        createConnection();
        Statement stmt = con.createStatement();
        int ret = stmt.executeUpdate(sql);
        stmt.close();
        return ret;
    }
    
//-------------------------------------------------------------------------------------------------------

}


Link to comment
Share on other sites

Sry nao ter respondido tava a braços com um trabalho de Sistemas distribuidos. Era um problema na definição do DBAPI nao era? (kk koisa como falta de definicao de host)

BTW parabens pela qualidade de codigo, muito bem organizado e implementado, comentarios como ja ninguem tem paciencia para fazer, gostei especialmente do transient :) , mas se no futuro por acaso tiveres uma classe que tenha varios campos transient pensa em usar o interface externalizable.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.