• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

alexvaz

[Resolvido]JSP + ODBC

6 mensagens neste tópico

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á???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Posta o resto do codigo, so com isso e dificil (para nao dizer impossivel) ajudar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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;
    }
    
//-------------------------------------------------------------------------------------------------------

}


0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, poupo-vos o trabalho, já resolvi! :P

Obrigado na mesma

ainda bem, eu coloquei o codigo em Geshi java para se ler melhor...e ja agora, diz qual era  o problema, ou coloca ja o correcto...  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora