hansa:
Det krav er helt umuligt at opfylde, for din applikationsserver laver din jsp side om til en bean inden den bliver kompilet.
Og som arne siger er det dårligt design at havde kode i en JSP side.
Derfor brug denne klasse til at lave forbindelsen istedet:
Da den ikke extender en bean, kan man godt argumentere for at det ikke er en bean, men bare en alm. klasse.
Hvilket du godt må bruge, da du ellers slet ikke kan udskrive så meget som 1 linies text.
/*
* DataBase.java
*
* Created on 3. december 2000, 21:06
*/
import java.sql.*;
import disky.database.*;
/**
*
* @author Søren Reinke
* @version
*/
/*
* Funder lidt over om database forbindelsen kun skal åbnes ved brug, eller x antal altid skal være åben
* og man så bruge den/de som connection pool
*/
public class DbHandler extends Object
{
private Connection con=null;
/** Creates new DataBase */
public DbHandler()
{
}
public boolean open(String dbDriverName, String dbClassName, String user, String pass)
{
try
{
if(con==null)
{
Class.forName(dbDriverName).newInstance();
con = DriverManager.getConnection(dbClassName, user, pass);
}
}
catch (SQLException e)
{
e.printStackTrace(System.out);
return false;
}
catch (ClassNotFoundException e)
{
e.printStackTrace(System.out);
return false;
}
catch (InstantiationException e)
{
e.printStackTrace(System.out);
return false;
}
catch (IllegalAccessException e)
{
e.printStackTrace(System.out);
return false;
}
return true;
}
public void close()
{
if(con!=null)
{
try
{
con.close();
con=null;
}
catch (SQLException e)
{
e.printStackTrace(System.out);
}
}
}
public int doUpdate(String sql)
{
if(con!=null)
{
try
{
long time=System.currentTimeMillis();
Statement stat=con.createStatement();
System.out.println("SQL Update = "+(System.currentTimeMillis()-time)+" ms "+sql);
return stat.executeUpdate(sql);
}
catch (SQLException e)
{
e.printStackTrace(System.out);
}
}
return 0;
}
public ResultSet doQuery(String sql)
{
if(con!=null)
{
try
{
long time=System.currentTimeMillis();
Statement stat=con.createStatement();
System.out.println("SQL Update = "+(System.currentTimeMillis()-time)+" ms "+sql);
return stat.executeQuery(sql);
}
catch (SQLException e)
{
e.printStackTrace(System.out);
}
}
return null;
}
}
kald open("org.postgresql.Driver","jdbc:
postgresql://SERVERNAME/DATABASENAME", "USERNAME", "PASSWORD");
Derefter kan du f.eks. kalde:
executeQuery("select * from table where navn='damski'");
Den leverer et resultset tilbage som du så behandler.
Klassen er blevet brugt i flere projekter,