No suitable driver

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo

Ich möchte in mein Projekt die HSQLDB Datenbank einbinden, jedoch bekomme ich folgenden Fehler:
java.sql.SQLException: No suitable driver
Habe auch schon mal rumgeschaut und es soll an dieser Zeile liegen:
Code:
Connection con =DriverManager.getConnection( "jdbc:hsqldb:file:E:/Java/Haus/DB","sa","");

Aber was stimmt daran nicht?
(Habe es auch schon ohne ...:file:... probiert, selbes Ergebnis)
 
G

Guest

Gast
hi
nee, habe ich in der Main (ok, habe ich auch nicht gesagt gehabt...)

glaube es liegt daran, dass ich beim Start einen Thread starte...
weil wenn der thread läuft und ich es dann aufrufe, bekomme ich die Fehlermeldung nicht...

aber Danke trotzdem ersteinmal :)
 

The_S

Top Contributor
Zeig doch mal den kompletten Code. Evtl. wird (durch den Thread) versucht die Connection aufzubauen, bevor der Treiber überhaupt geladen wurde!?
 
G

Guest

Gast
Die Main:

Code:
public class Main 
{
	static JFrame frame;
	static Logger log = Logger.getLogger("de.myname.UseHSQLDB");
	public static void main(String[] args) 
	throws SQLException, ClassNotFoundException, UnknownHostException, IOException 
	{		
		
		frame = new Test();
		log.log(Level.INFO, "Starting to load JDBCDriver... ");
		Class.forName("org.hsqldb.jdbcDriver");
		log.log(Level.INFO, "JDBC Driver successfully loaded!");		
		frame.setBounds(10,35,295,770);
		frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}


Test:
Code:
class SThread extends Thread
{...}

public class Test extends JFrame implements MouseListener
{...
	public Test() throws UnknownHostException, IOException, SQLException
	{
		super("Test");
		{			
		    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		    JLabel label = new JLabel();
		    JPanel panel = new JPanel();
		    panel.add(label);
		    panel.setBackground(Color.blue);
		    this.getContentPane().add(panel);		    
		    SThread sthr = new SThread();
		    sthr.start();
		    checkdb.checkhouse();
			
		}
	}

}

Und, die CheckDB

Code:
public class checkdb
{
	static void checkhouse () throws SQLException
	{
		Connection con =DriverManager.getConnection( "jdbc:hsqldb:file:E:/Java/Haus/DB","sa","");					
		ResultSet rs;
		String sqlQuery;
		Statement stmt = con.createStatement();	
		sqlQuery = "SELECT * FROM haus";
		rs = stmt.executeQuery(sqlQuery);
		while (rs.next())
		{
			...
		};
	};
}
 

The_S

Top Contributor
Mal von dem sehr gewöhnungsbedürftigen Code abgesehen (viel zu viel static, wo keines benötigt wird, Klassennamen schreibt man groß, ...), würde ich dir dringend raten, den Treiber BEVOR du die Connection aufbaust zu laden.
 
G

Gast

Gast
Hi...

jup, mit den Klassennamen haste recht, aber warum gewöhnungsbedürftiger Code?
 

The_S

Top Contributor
wie gesagt, recht viel static benutzt, wo es imho nicht sein müsste. Und ansonsten schaut es so auch nicht unbedignt so gut strukturiert aus. Kann aber natürlich auch sein, dass ich mich irre, ich kenn das komplette Projekt/Klassen ja nicht.

Gehts jetzt?
 
G

Guest

Gast
Jup, jetzt geht's :applaus:
Lag an der MAIN:

ALTE:
Anonymous hat gesagt.:
Die Main:

Code:
public class Main 
{
	static JFrame frame;
	static Logger log = Logger.getLogger("de.myname.UseHSQLDB");
	public static void main(String[] args) 
	throws SQLException, ClassNotFoundException, UnknownHostException, IOException 
	{		
		
		frame = new Test();
		log.log(Level.INFO, "Starting to load JDBCDriver... ");
		Class.forName("org.hsqldb.jdbcDriver");
		log.log(Level.INFO, "JDBC Driver successfully loaded!");		
		frame.setBounds(10,35,295,770);
		frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}

NEUE:
Code:
public class Main 
{
	static JFrame frame;
	static Logger log = Logger.getLogger("de.myname.UseHSQLDB");
	public static void main(String[] args) 
	throws SQLException, ClassNotFoundException, UnknownHostException, IOException 
	{		
		log.log(Level.INFO, "Starting to load JDBCDriver... ");
		Class.forName("org.hsqldb.jdbcDriver");
		log.log(Level.INFO, "JDBC Driver successfully loaded!");		
		frame = new Test();																								<<---daran
		frame.setBounds(10,35,295,770);
		frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}

DANKEEEEEE
 
G

Gast

Gast
habe gerade mal wegen den "static" geschaut, ohne will Eclipse nicht...
(wenn du das in der Main gemeint hast...)
 

The_S

Top Contributor
nein, ich mein nicht in der main-methode. Das muss static sein. Aber kannst dir ja bei Gelegenheit n bisschen was zu OOP durchlesen ;) .
 
G

Gast

Gast
hm, static wird nur das, wo es eclipse will, dass es static wird...
 
G

Guest

Gast
Habe ein weiteres "kleines" Problemchen und zwar rufe ich in der Test, die Fkt inhaus() aus der Klasse AllDB (ehemals checkdb) auf...

Das Problem besteht nun darin, wenn ich einen Datensatz einfüge, wird es auch bei "Ausgabe zur Kontrolle" korrekt dargestellt, jedoch wenn ich das Programm schliesse und aus der hsqldb/demo den DBManager aufrufe, steht der Datensatz nicht in der Tabelle.
Wenn ich mehrere Eingebe, wird jeweils der Letzte nicht mit reingeschrieben, obwohl er richtig angezeigt wird, bei "Ausgabe zur Kontrolle"


Code:
static String inhaus (String Strasse, String ort, int status) throws SQLException
{
	int j = -1;
	int adridx = 0;	
	Connection con = DriverManager.getConnection( "jdbc:hsqldb:file:E:/Java/Haus/DB","sa","");		
	stmt = con.createStatement();
	//---------------------------------------------------------------------------------------------------------------------------
	sqlQuery = "SELECT * FROM Adresse WHERE ort ='"+ort+"'";
	rs = stmt.executeQuery(sqlQuery);
	while (rs.next())
	{adridx = rs.getInt("adr_idx");}
	System.out.println("ort: "+ort+" / adridx: "+adridx);
	System.out.println("Strasse: "+Strasse);	
	//--------------------------------------------------------------------------------------------------------------------------- // Einschreiben in die Tabelle
	sqlQuery = "SELECT * FROM Familie";
	rs = stmt.executeQuery(sqlQuery);
	while (rs.next())
	{j++;}			//Zeilenanzahl vestimmen
	String sqlQuery1 = "INSERT INTO Familie (fam_Idx, Adr_Idx, Status, Status2, Strasse) VALUES ("+(j+1)+" ,"+adridx+", "+status+", 2, '"+Strasse+"')";
	stmt1 = con.createStatement();
	stmt1.executeUpdate(sqlQuery1);
	//--------------------------------------------------------------------------------------------------------------------------- //Ausgabe zur Kontrolle
	sqlQuery = "SELECT * FROM Familie";
	rs = stmt.executeQuery(sqlQuery);
	while (rs.next())
	{System.out.println("fam_Idx: "+rs.getInt("fam_Idx")+" /adr_Idx: "+rs.getInt("adr_Idx")+" /Status: "+rs.getInt("Status")+" /Status2: "+rs.getInt("Status2")+" /Strasse: "+rs.getString("Strasse")+" /TS: "+rs.getTimestamp("TS"));}
	stmt.close();
	con.close();
}

Hat da jemand eine Ahnung, wie man den letzten Datensatz noch mit reinbekommt?
 
G

Guest

Gast
hm, erwischt :wink:
nee, hatte es drinne, aber wenn man mit dem X schliesst, wird es nicht ausgeführt...

werde ich noch ändern... Danke für den Hinweis!!!
 

thE_29

Top Contributor
Das Problem war, du hast den Frame erzeugt bevor du die Treiber geladen hast und deswegen hats den schön zerbrösselt weil er keinen Treiber gefunden hat!!
 
G

Guest

Gast
nee, es war schon so, das ich keinen Shutdown drinne hatte, wenn ich das Fenster mit "X" geschlossen hatte, weil erst durch den "Shutdown" speichert er den gecachten Datensatz (also den letzten) in die DB...

aber mit:
Code:
stmt.execute("Checkpoint");

soll es auch gehen...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B SQLite + jdbc + IntelliJ-Consumer = "No suitable driver found..." Datenbankprogrammierung 15
J RESTServie + JDBC + No suitable driver found for jdbc Datenbankprogrammierung 4
B No suitable driver found for jdbc:oracle:thin:@$HOST:$PORT:$SID Datenbankprogrammierung 7
AMStyles No suitable driver found for Datenbankprogrammierung 4
A No suitable driver found for jdbc:microsoft:sqlserver... Datenbankprogrammierung 9
N Derby/JavaDB No suitable driver found Datenbankprogrammierung 14
StYxXx Microsoft-SQL: No suitable driver found Datenbankprogrammierung 11
Y Java und MySql... "No suitable Driver..." Datenbankprogrammierung 16
S SQLException: No suitable driver bei DB2 Datenbankprogrammierung 4
G No suitable driver Datenbankprogrammierung 8
G Das tolle "No suitable driver found" Datenbankprogrammierung 4
S no suitable driver Datenbankprogrammierung 2
G MySQL: Login-Problem: No suitable Driver Datenbankprogrammierung 13
D MySQL No Suitable Drivers found Datenbankprogrammierung 4
Maxim6394 EclipseLink + SQLite | Unable to acquire a connection from driver [null] Datenbankprogrammierung 6
ralfb1105 Oracle Zwei ojdbc Driver in einer Applikation? Datenbankprogrammierung 13
thet1983 Derby/JavaDB Embedded Driver Datenbankprogrammierung 7
thet1983 MySQL ODBC Driver zuweisen unter Mac OX Mav Datenbankprogrammierung 2
T JAR keine H2 driver? Datenbankprogrammierung 3
Q Oracle Linux: ClassNotFoundException: oracle.jdbc.driver.OracleDriver Datenbankprogrammierung 6
K JDBC Driver not found Datenbankprogrammierung 10
Y java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid cursor state Datenbankprogrammierung 2
S MSSQL JDBC "Driver class not found" Datenbankprogrammierung 9
S Access 2007 zugreifen- ODBC Driver Manger Datenbankprogrammierung 3
K org.gjt.mm.mysql.driver wird nicht gefunden Datenbankprogrammierung 11
F MySQL - Connection JDBC-Driver Problem Datenbankprogrammierung 4
S java.lang.ClassNotFoundException: com.mysql.jdbc.Driver Datenbankprogrammierung 10
F DBConnect schläg fehl: not suitble Driver ?!? Datenbankprogrammierung 4
N MS-acces JDBC driver Datenbankprogrammierung 3
D Jdbc: Unable to load Driver! Datenbankprogrammierung 11
H Fehler mit ". Microsoft Access Driver" Datenbankprogrammierung 12
G MySQL Driver Bug? Datenbankprogrammierung 6
H Konnte den Treiber com.mysql.jdbc.Driver nicht laden. Datenbankprogrammierung 19
L Wo bekomme ich: "org.gjt.mm.mysql.Driver"? Datenbankprogrammierung 1
zilti java.lang.ClassNotFoundException: com.mysql.jdbc.Driver Datenbankprogrammierung 3
D java.lang.ClassNotFoundException: com.mysql.jdbc.Driver Datenbankprogrammierung 5
B Oracle Driver Probleme Datenbankprogrammierung 2
E Problem beim laden des JDBC Driver bzw der Database Datenbankprogrammierung 8
R NetBeans und com.mysql.jdbc.Driver Datenbankprogrammierung 2
N [Microsoft][ODBC Microsoft Access Driver]COUNT field incorre Datenbankprogrammierung 13
K Mysql Driver Datenbankprogrammierung 2

Ähnliche Java Themen


Oben