JDBC:ODBC fejl problem
jeg har lavet en java klasse, som pakke min database forbindelse til en access database ind i JDBC:ODBC kald.Jeg kan udføre alle mulige select statements, men hvis jeg laver følgende kald virker det ikke:
********
DB.select("select h2.navn as name, sum(temp.points) as point, sum(temp.GF)as Goals_for, sum(temp.GA) as Goals_Against from ( select sum(hold1_point) as points, sum(hold1_maal) as GF, sum(hold2_maal) as GA from kamp where hold1_id=2 union select sum(hold2_point) as points,sum(hold2_maal) as GF,sum(hold1_maal) as GA from kamp where hold2_id=2 ) temp, hold h2 where h2.hold_id =2 group by h2.navn;");
******
hvor DB er min DB handler.
koden til DB handler er:
*******
import java.sql.*;
public class DBHandler extends Object{
private Connection con = null;
private Statement stat = null;
private ResultSet rs = null;
public DBHandler(){}
public boolean open(String dbDriverName, String dbClassName)
{
try
{
if(this.con==null)
{
Class.forName(dbDriverName).newInstance();
con = DriverManager.getConnection(dbClassName);
}
}
catch (SQLException e)
{
return false;
}
catch (ClassNotFoundException e)
{
return false;
}
catch (InstantiationException e)
{
return false;
}
catch (IllegalAccessException e)
{
return false;
}
return true;
}
public void close()
{
if(con!=null)
{
try
{
con.close();
con=null;
}
catch (SQLException e)
{
}
}
}
public boolean insert(String sql)
{
if(con!=null)
{
try
{
stat = con.createStatement();
stat.executeUpdate(sql);
}
catch (SQLException e)
{
e.printStackTrace(System.out);
return false;
}
}
return true;
}
public ResultSet select(String sql)
{
if(con!=null)
{
try
{
stat = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = stat.executeQuery(sql);
}
catch (SQLException e)
{
e.printStackTrace(System.out);
}
}
return rs;
}
}
******
jeg har inden jeg kalder med SQL statemen naturligvis åbent en forbindelse som jeg ved virker, da jeg kan lave andre select statements uden problemer.
jeg har testet SQL sætningen direkte på Access databasen i querys, og her fungerer den fint, men hvis jeg eksekverer den igennem min DBhandler får jeg følgende fejl:
a.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'NAME' as part of an aggregate function.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
at sun.jdbc.odbc.JdbcOdbcResultSet.calculateRowCount(JdbcOdbcResultSet.java:6357)
at sun.jdbc.odbc.JdbcOdbcResultSet.initialize(JdbcOdbcResultSet.java:157)
at sun.jdbc.odbc.JdbcOdbcStatement.getResultSet(JdbcOdbcStatement.java:424)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:254)
håber der er nogen der kan hjælpe mig med at løse problemte, og helst hurtigt. jeg sidder nemlig og bruger det til et skoleprojekt, derfor de mange point...
