Fraggie
Legacy Member
Ik ben aan het uitzoeken wat je juist allemaal kan doen met Java & MySQL.
Alles gaat goed:
Eerst de driver loaden & vervolgens een connectie maken:
Class.forName("com.mysql.jdbc.Driver").newInstance();
db = DriverManager.getConnection("jdbc:mysql://localhost/javadb", "login", "pwd");
Vervolgens een stamtement openen en de query verzenden en opvangen
Statement stmt = db.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
Verwerk gaat ook goed, met al de methoden van ResultSet
MAAR, gezien ik alleen nog maar in PHP met een database gewerkt had, wou ik volgende methode maken in de klasse Database:
Wanneer ik ze echter aanspreek uit de klasse Client:
krijg ik volgende error: SQLException: No operations allowed after connection closed.
Ik dacht dat de ResultSet alles uit de database haalde in in het geheugen stopte? Dus dat de connectie niet open moet blijven om er bewerkingen mee uit te voeren?!
Of moet ik telkens een nieuwe statement & resultset maken als ik even in de db wil kijken?
Alles gaat goed:
Eerst de driver loaden & vervolgens een connectie maken:
Class.forName("com.mysql.jdbc.Driver").newInstance();
db = DriverManager.getConnection("jdbc:mysql://localhost/javadb", "login", "pwd");
Vervolgens een stamtement openen en de query verzenden en opvangen
Statement stmt = db.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
Verwerk gaat ook goed, met al de methoden van ResultSet
MAAR, gezien ik alleen nog maar in PHP met een database gewerkt had, wou ik volgende methode maken in de klasse Database:
Code:
public ResultSet mysql_query(String s) throws SQLException {
Statement stmt = db.createStatement(); // Telkens terug een connectie openen
ResultSet rs = stmt.executeQuery(s);
return rs;
}
Wanneer ik ze echter aanspreek uit de klasse Client:
Code:
class KnopHandler extends Database implements ActionListener {
public void actionPerformed( ActionEvent e ) {
...
try { ResultSet info = mysql_query("SELECT * FROM users WHERE *");
while ( info.next() ) {
System.out.printf( "%s\n", info.getObject( "id" ));
}
} catch (SQLException sqle) { System.out.println("SQLException: " + sqle.getMessage()); } // Zoals mysql_error
...
Ik dacht dat de ResultSet alles uit de database haalde in in het geheugen stopte? Dus dat de connectie niet open moet blijven om er bewerkingen mee uit te voeren?!
Of moet ik telkens een nieuwe statement & resultset maken als ik even in de db wil kijken?
