Seltsam. Wie du siehst, bei mir klappt es ... kurioshabe es jetzt auch mit java 16 getestet mit dem "file:" geht es bei mir nicht
Seltsam. Wie du siehst, bei mir klappt es ... kurioshabe es jetzt auch mit java 16 getestet mit dem "file:" geht es bei mir nicht
Du kannst die Datei ja auch einlesen, und dann über die Statements darin iterieren und jedes einzeln ausführenDas Statement besteht aber aus geschätzten 300 Datensätzen. Wie würde man das abrufen? Da wäre die Datei die eingelesen wird ja schon optimaler oder?
Aber bin ich dann nicht bei meinem Ursprünglichem Problem? In der Datei lässt er kein create Table zu ?!Du kannst die Datei ja auch einlesen, und dann über die Statements darin iterieren und jedes einzeln ausführen![]()
Ohja und das scheint ein riesengroßer Kreis zu seinIch glaube, wir drehen uns im Kreis:
- Du hast doch schon bestätigt, dass das CREATE TABLE funktionierte (ohne weitere SQL Anweisungen dahinter)
- Daher dann die Frage, was denn das "In der Datei lässt er kein create Table zu ?" bedeutet. Was für einen Fehler bekommst Du denn da jetzt plötzlich? Existiert die Datenbank evtl. noch? Dann wäre ggf ein DROP TABLE IF EXISTS zuerst notwendig?
Die Fehler, die in der Datei angezeigt werden, sind erstmal völlig egalSchreibe ich das Statement nun in die extra dafür angelegte File, kennt er plötzlich (in diesem File) kein Table mehr.
Das ich dem File irgendeine Source zuweisen muss, ist mir neu, weil in dem Tutorial wird auch nur im Projektbaum ein NEW File angelegt und dort das Statement reingepackt.
Für Java ist egal, ob der String dabei direkt in der Klasse steht oder aus einer Datei gelesen wird.- Ich habe bestätigt, dass create Table funktioniert wenn ich es ( das Statement) direkt in die Klasse schreibe, wie von Mr Brown in #43 beschrieben.
Klingt vielleicht etwas gemein und überheblich, aber ignorier besser alles, was er/sie hier im Thread gesagt hat, das war alles entweder falsch oder nicht hilfreich.Ist ja auch seltsam, das JW456 die Db nicht angelegt bekommt mit dem Code, ich aber schon.
Also da musst Du Dir keine Sorgen machen. Die Thematik mag zwar nerven (vor allem Dich denke ich mal), aber das sollte nicht die Person betreffen. Wir wollen ja helfen und sind bereit dazu. Und bisher lief es im Thread ja sachlich und lösungsorientiert ab.Will auch garnicht nerven.
ehmm das ist mir zu hochSolche initializer-Blöcke solltest du aber tunlichst vermeiden, genauso wie ein printStacktrace an solcher Stelle
Entweder in einen richtigen Konstruktor, oder besser in eine explizite Methode.
Wie @Jw456 schon angedeutet hat, baust du zwar in der Methode connection() eine Verbindung auf, aber da es sich bei connection um eine lokale Variable in der Methode handelt, wird diese am Ende der Methode sofort wieder zerstört. Entweder du gibst die Connection als Rückgabewert zurück, so dass deine anderen Methoden sie verwenden können oder du verwendest eine Instanzvariable dafür.Diese lasse ich in der Main Klasse starten und baue somit die Db auf bzw. connecte.
Klassenvariable und Instanzvariable ist das gleiche zwei Begriffe aber das gleiche.Methoden sie verwenden können oder du verwendest eine Instanzvariable dafür.
Ja.Bedeutet, so wie es jetzt ist würden weitere Statements in Main nicht ausgeführt werden können, weil die DB sofort wieder gekillt wird ?
Schau mir die Sache mit return mal an.
public class Main {
public static void main(String[] args) {
SQL sql = new SQL();
Connection connection = sql.getConnection();
// mach was mit connection
}
}
Definitiv nicht.Klassenvariable und Instanzvariable ist das gleiche zwei Begriffe aber das gleiche.
class Foo {
static int klassenvariable = 42;
int instanzvariable = 32;
}
Das ist auch nicht das Thema. Es geht um die Aussage, dass Klassen- und Instanzvariable das Gleiche beschreiben und das ist nicht der Fall.Static würde ich nicht machen.
Siehe #74. Eine Klassenvariable ist statisch und gehört zur Klasse, während eine Instanzvariable zur Instanz einer Klasse gehört. Sagt ja schon der Name, oder?Was ist für dich der Unterschied?
Ich würde in deinem Fall zur Instanzvariablen tendierenHähhhh ? Leicht lustig gerade
Ich schau mir mal an wie das mit den Variablen läuft.
Bleibt spannend
In viele Anleitungen und auch Büchern wird das gleichgesetzt.Klassenvariablen sind Variablen, die zur Klasse gehören, d.h. static sind.
Da die beiden Begriffe unterschiedliche Dinge beschreiben, halte ich das nicht für kleinlich.Für mich ist es einmal eine static Klassenvariable und eine al eine Klassenvariable.
Das ist Thema für Begrifflichkeiten. Irgendwie kleinlich soetwas
https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.12.3In viele Anleitungen und auch Büchern wird das gleichgesetzt.
So nun zeigt mir die offizielle Definition damit ich es bei in Zukunft richtig bezeichne. Und ihr ers auch versteht.
Genau das hätte ich gemeint sonnst hätte ich gesagt das er eine static Klassenvariabe machen soll.Ich würde in deinem Fall zur Instanzvariablen tendieren![]()
Dann sind diese Anleitungen / Bücher schlicht falsch!In viele Anleitungen und auch Büchern wird das gleichgesetzt.
So nun zeigt mir die offizielle Definition damit ich es bei in Zukunft richtig bezeichne. Und ihr ers auch versteht.
Für eine Klassenvariable, benötigst du kein Objekt, denn ein Objekt ist definitionsgemäß die Instanz einer Klasse (oder ein Array). Und bevor du wieder nachfragen musst, das steht hier: https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.3.1
In Java ist jede Variante an eine Objekt gebunden globale wie in C gibt es nicht.
Ok dann ersetzte Objekt mit Klasse dann stimmt der Satz.In Java ist jede Variante an eine Objekt gebunden globale wie in C gibt es nicht.
Das stimmt so nicht. Natürlich meinst Du das Richtige, denn für eine Klassenvariable brauchst Du keine Instanz der Klasse.Für eine Klassenvariable, benötigst du kein Objekt, denn ein Objekt ist definitionsgemäß die Instanz einer Klasse (oder ein Array). Und bevor du wieder nachfragen musst, das steht hier: https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.3.1
Wobei dann natürlich die Frage ist: Was genau ist mit Variante, Objekt und gebunden gemeint. Aber wenn man da nicht zu sehr versucht, etwas Falsches da rein zu interpretieren, dann ist das durchaus richtig. Globale Variablen so wie es diese z.B. in C gibt, gibt es in Java Programmen nicht.In Java ist jede Variante an eine Objekt gebunden globale wie in C gibt es nicht.
Sollst du nachher bekommen. Sitze gerade nur am Handy.Endlich Zurück zum Thema.
Hallo TE zeige mir doch bitte mal wie du die Sqlite Lib in dein Projekt eingebunden hast. In der pom.xml Datei.
Ja mag sein das du was von sqlhelper geschrieben hast, hier wurde aber in kurzer Zeit soviel geschrieben / wiederlegt / diskutiert, dass ich als Anfänger da erstmal durchblicken muss.Da ich das ganze alleine zu Hause neben der Arbeit lerne, dauert das manchmal alles was längerIch hatte dir am Anfang auch dazu geraten einen sqlhelper zuerstellen und die Daten Klassen zubenutzen.
Hier hast du nun eine ausführliche Beschreibung.
Bitte zeige mir wir du die Lib eingebunden hast vorallen welche.
Hab es gerade am Handy rausgesucht.Ok du warst halt schneller
Ok danke da habe ich wohl eine zu alte Version benutzt. Werde es heute Abend noch mal testen. Ob es mit dem file:.... Und ohne demHab es gerade am Handy rausgesucht.
Das hier steht in meiner POM
[CODE lang="java" title="Sqlite Maven dependency"]<!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.36.0</version>
</dependency>
[/CODE]
"file:" ist H2-spezifisch, das geht afaik nicht mir SQlite.Ok danke da habe ich wohl eine zu alte Version benutzt. Werde es heute Abend noch mal testen. Ob es mit dem file:.... Und ohne dem
Class.forName("org.sqlite.JDBC")
Auch bei mir geht.