Hallå!
Jag har fått problem med ett arv som jag inte riktigt har klurat ut hur jag ska lösa. Tanken är att jag ska ha en superklass som ska innehålla den kod som krävs för att ansluta till en databas. I basklassen kommer då SQL-frågor och sånt att finnas. Anledningen till att jag vill ha den här uppdelningen är att vi är två stycken som arbetar på ett projekt där vi båda kommer att använda oss av samma databas men där SQL-frågorna kommer att skilja sig en del. Därför vore det smidigt med en superklass och varsin basklass.
Superklassen ser ut så här:
import java.sql.*;
import java.util.*;
class projektDB
{
public projektDB(String dbHandle) throws SQLException
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:projekt";
Connection dbConnection = DriverManager.getConnection(url);
Statement state = dbConnection.createStatement();
}
catch(ClassNotFoundException exception)
{
System.err.println("Error loading JDBC driver: "+exception.toString());
}
}
}
Superklassen kompilerar iofs men det är en sak som jag undrar över. Den kräver att man antingen fångar eller kastar ett SQLException för att kompilera. Om jag nu väljer att kasta den (det finns ju ingen SQL-kod i superklassen) fångas den då av basklassen om jag har motsvarande catch där?
Basklassen:
import java.awt.*;
import java.sql.*;
import java.util.*;
class projektDBmusik extends projektDB
{
private String sql;
public projektDBmusik(String dbHandle)
{
super(dbHandle);
}
public void insertDB()
{
sql = "SELECT artistname FROM artist;";
try
{
state.execute(sql);
ResultSet mySet = state.getResultSet();
while(mySet.next())
{
System.out.println(mySet.getString("artistname"));
}
}
catch (SQLException exception)
{
System.out.println ("SQL Error: " + exception.toString());
}
}
}
Det är den här delen som är inte alls vill fungera. Det den klagar på är "cannot resolve symbol symbol : variable state". Var ska man skapa sitt Statement? Har prövat att lägga det i både superklass och basklass men jag har fått samma problem. Det känns som om jag missat något elementärt här så alla tips är välkommna. Om det är något jag behöver förtydliga så är det bara att säga till.