SQLite Statement nimmt keine Namen aus getter-Methoden

d9

Mitglied
ich habe folgendes Problem:

ich will in einer Spatialite Datenbank eine Tabelle erstellen, die den Namen anhand von einer Getter-Methode einer anderen Klasse bekommt, der Code sieht folgendermaßen aus:

Java:
private static String trname = Track.getTrackname();      // "2012Feb06"

private static void initDatabase() throws ClassNotFoundException{	
	Class.forName("org.sqlite.JDBC");
	conn = null;
	String track = "abc"; 
	track= trname;
	try {
		SQLiteConfig config = new SQLiteConfig();
		config.enableLoadExtension(true);
		Connection conn = DriverManager.getConnection("jdbc:sqlite:spatialite.sqlite", config.toProperties());
		Statement stmt = conn.createStatement();
		stmt.setQueryTimeout(30); 
		stmt.execute("SELECT load_extension('libspatialite-2.dll')");
		String sql = "SELECT InitSpatialMetadata()";
		stmt.execute(sql);
		// creating a POINT table
		sql = "CREATE TABLE ";
		sql += track;
		sql += "(id INTEGER NOT NULL PRIMARY KEY,";
		sql += "name TEXT NOT NULL)";
		System.out.println(sql);
		stmt.execute(sql);

nach dem execute kommt immer ein

[SQLITE_ERROR] SQL error or missing database (unrecognized token: "2012Feb6")

das System.out.println zeigt mir aber die normal übliche SQL schreibweise für das statement:

CREATE TABLE 2012Feb6(id INTEGER NOT NULL PRIMARY KEY,name TEXT NOT NULL)


wenn ich aber das
Java:
track= trname;
weglasse, erzeugt er mir ganz normal die Tabelle "abc". Kann das sein dass das prepared statement keine getter Methoden verträgt? wenn ja, wie kann ich das dann lösen?
 
S

SlaterB

Gast
deine Frage entbehrt jeder Grundlage,

du hast
Java:
String track = "abc";
wenn du es dabei belässt, kommt "abc" in die Query, alles funktioniert

dann hast du noch einen String trname, in dem wie du selber sagst "2012Feb06" drinsteht,
wenn du diesen String mit
Java:
track= trname;
miteinbeziehst landet "2012Feb06" im SQL und macht Probleme,

wo ist hier jetzt irgendeine Überraschung? es gibt doch sicher keine Tabelle, die so heißt?
entweder du willst "abc" oder "2012Feb06" in der Query haben, mache was du möchtest und lebe dann mit den Konsequenzen?

-----

kleine Vermutung da du so stark von getter sprichst:
wenn du
Java:
track= trname;
ausführst, wird nicht zu genau diesem Zeitpunkt erneut der getter ausgeführt, sondern das passierte schon vorher, wann auch immer,
diese Codezeile bewirkt nicht mehr und nicht weniger, dass genau der String-Inhalt übernommen wird
 
Zuletzt bearbeitet von einem Moderator:

d9

Mitglied
hallo slater, deine antworten sind immer die besten :D

mein problem ist, der String, den ich durch die Getter Methode bekomme, wird vom Statement nicht angenommen.
mit dem String "abc" wollte ich nur zeigen, dass wenn ich einen String in derselben Klasse erzeuge wo das Statement liegt, das Statement sehr wohl ausgeführt wird (es wird nämlich die Tabelle "abc" erzeugt)
ich WILL aber einen String aus einer anderen Klasse holen und dann die Tabelle mit demjenigen Namen erzeugen, funktioniert aber so nicht...
 
G

Gast2

Gast
Dann zeig doch mal den Code mit dem Getter plus die Klasse in der der Getter implementiert ist.
 

XHelp

Top Contributor
Versuch es mal mit
Code:
sql += "["+track+"]";
, vermutlich verwendest du einfach nicht ganz zulässige Tabellennamen
(oder
Code:
`
, statt
Code:
[
, bin mir da gerade nicht sicher)
 
S

SlaterB

Gast
> mein problem ist, der String, den ich durch die Getter Methode bekomme, wird vom Statement nicht angenommen.

dass der Tabellenname nur deshalb abgelehnt wird, weil er aus dem getter kommt, ist weitgehend auszuschließen,

wenn dann sage doch einfach 'mein Tabellenname '2012Feb06' wird nicht angenommen',
oder ist das 'abc', welches du direkt vorgibst, exakt derselbe Name?

vergleiche gegebenenfalls track und trname, wenn der eine akzeptiert wird, und der andere nicht, dann sind sie bestimm nicht equal
 

d9

Mitglied
die Klasse Track, von der ich den Namen hole:
Java:
public class Track {
	private static String trackname;


	public static String getTrackname() {
		return trackname;
	}
	
	public void setTrackname(String trackname) {
		this.trackname = trackname;
	}
}

die Klasse FileDataAccess, in der ich aus einer GPX Datei die Werte herauslese:

Java:
public static List<TrackPoint> getPoints(File gpxFile) {
	List<TrackPoint> points= null;

	try {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();


		FileInputStream fis = new FileInputStream(gpxFile);
		Document dom = builder.parse(fis);
		Element root = dom.getDocumentElement();
		
		NodeList items = root.getElementsByTagName("name");
		
		Node it = items.item(0);
		
		final Track track = new Track();
		
		System.out.println("Name des Tracks: "+ it.getTextContent());
		track.setTrackname(it.getTextContent());                 // hier setze ich den tracknamen
		
		items = root.getElementsByTagName("trkpt");
                

                //und so weiter......
der Code aus dem 1. Posting ist übrigens in einer eigenen Klasse

fakt ist doch, dass ich zuerst aus der Datei herauslese, den Tracknamen abspeichere, und dann erst die Datenbank öffne. Bzw dass der Trackname wohl im
Java:
System.out.println(sql);
aus dem ersten Posting angezeigt wird.
 
S

SlaterB

Gast
nochmal konzentriert:
bisher hast du duch Fakten allein
> [SQLITE_ERROR] SQL error or missing database (unrecognized token: "2012Feb6")
unterlegt, bei 2012Feb6 würde ich auch stark vermuten dass so keine DB-Tabelle der Welt heißt,
mit gewisser Wahrscheinlichkeit auch als Tabellenname gar nicht möglich ist, beginnt mit Zahl

ich verstehe nicht wieso du dich jetzt auf andere Tabellen "abc", auf getter oder XML-Auswertung konzentrierst,
stattdessen:
gibt es überhaupt eine entsprechende Tabelle?
funktioniert eine ganz simple fertige SQL-Abfrage, ohne jede Variablen, "SELECT * FROM 2012Feb6"?
 

d9

Mitglied
@XHelp

Vielen Dank für deinen Tipp, anscheinend mag es irgendeine Methode im Code nicht, wenn ich im GPX File einen Namen im Feld <name> gespeichert habe, der mit einer Zahl anfängt! Habe deswegen die Anordnung verändert in Feb62012 und es klappt ohne Probleme! ;)
 
S

SlaterB

Gast
> anscheinend mag es irgendeine Methode im Code nicht

der Code ist bestimmt nicht schuld, die DB,

wie ich jetzt bemerke wird die Tabelle auch erst angelegt, das macht es natürlich bisschen schwieriger zu bewerten,
 
G

Gast2

Gast
die Klasse Track, von der ich den Namen hole:
Java:
public class Track {
	private static String trackname;


	public static String getTrackname() {
		return trackname;
	}
	
	public void setTrackname(String trackname) {
		this.trackname = trackname;
	}
}

Erm.... [c]private static String trackname[/c] und [c]public static String getTrackname()[/c]? Da solltest du dir nochmal Gedanken drüber machen...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T SQLite Alternativen zu SQlite, dateibasiert, leicht verschlüsselbar, Nutzerverwaltung Datenbankprogrammierung 21
B SQLite + jdbc + IntelliJ-Consumer = "No suitable driver found..." Datenbankprogrammierung 15
Maxim6394 JPA 3.2 & SQLite - LocalDateTime wird falsch geladen Datenbankprogrammierung 1
Maxim6394 EclipseLink + SQLite | Unable to acquire a connection from driver [null] Datenbankprogrammierung 6
J SQLite Abfrage fehlerhaft - komme nicht weiter - please help. Datenbankprogrammierung 3
thor_norsk SQLite Fehlermeldung Datenbankprogrammierung 4
N JDBC SQLITE und Cascading Datenbankprogrammierung 2
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
B SQLite Befehl bauen? Datenbankprogrammierung 4
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
thobren Projekt SQlite! Wie kann ich auf auf SQlite Daten zugreifen? Datenbankprogrammierung 4
Davee SQLite SQLite Datenbank lässt sich nicht auf anderen PCs öffnen Datenbankprogrammierung 8
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
D SQLite Collections oder Arrays in SQLite abbilden Datenbankprogrammierung 7
N ORM für Sqlite Datenbankprogrammierung 4
M SQLite Datenbank mit SQLite Datenbankprogrammierung 7
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
N SQLite Datenbankprogrammierung 2
S Daten von SQLite Datenbank nutzen Datenbankprogrammierung 5
B SQLite Frage zu SQLite Datenbankverbindung Datenbankprogrammierung 7
E Sqlite-jdbc Mitliefern Datenbankprogrammierung 4
X Sqlite Fks Datenbankprogrammierung 4
C JDBC und SQLite Datenbank Datenbankprogrammierung 8
X SQLite SQLite Programm beendet/führt nicht weiter aus Datenbankprogrammierung 12
Sam96 SQLite mit JavaFX Datenbankprogrammierung 1
T sqlite select Datenbankprogrammierung 12
V SQLite Performance: 1 Datei mit einzelnen Einträgen gegenüber SQLite Datenbankprogrammierung 7
F Java SQLite Error Datenbankprogrammierung 19
F Sqlite cannot commit Datenbankprogrammierung 2
H SQLite Sqlite Datenbank direkt einbinden. Datenbankprogrammierung 5
U Dom Parser und SQLite füllen Datenbankprogrammierung 5
D SQLite Datenkbank auf WebServer möglich? Datenbankprogrammierung 4
M Datenbankausgabe .jsp per SQLite Datenbankprogrammierung 7
J SQLite Login Datenbank Datenbankprogrammierung 2
M SQLite Einstieg mit SQLite, wohin mit der DLL? Datenbankprogrammierung 7
M SQLite Speicherpfad Datenbankprogrammierung 0
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
G sqlite innerjoin Datenbankprogrammierung 5
G SQLite Daten aus SQLite DB in andere SQLite DB importieren Datenbankprogrammierung 4
R sqlite UPDATE wirkt nicht aus Java Datenbankprogrammierung 7
G SQLite SQLite Abfrage Datenbankprogrammierung 4
F SQLite-Extensions unter Java Datenbankprogrammierung 2
H SQLite mit DefaultTableModel synchronisieren Datenbankprogrammierung 5
L SQLite fügt nur den ersten Datensatz ein Datenbankprogrammierung 2
S SQLite Ausführbares Jar mit SQLite DB Datenbankprogrammierung 4
F [SQLite] Mehrere Datensätze einfügen Datenbankprogrammierung 12
H SQLite Datenkbank erstellen Datenbankprogrammierung 3
S Abfrage auf SQLite-DB Datenbankprogrammierung 2
Kasoki SQLite SQLite oder doch XML!? Datenbankprogrammierung 2
G SQLite Abfrage, ob in Tabelle X Spalte Y existiert Datenbankprogrammierung 4
G SQLJet (SQLite) - Mehrbenutzerzugriff auf Datenbank handhaben Datenbankprogrammierung 1
S SQLite in JAR Datenbankprogrammierung 8
J SQLite --> Java SDK Datenbankprogrammierung 7
P Datenbank für Java Anwendung wie SQLite ohne Installation Datenbankprogrammierung 4
P Sqlite API für JAVA ? Datenbankprogrammierung 9
feuervogel SQLite unter Linux mit Eclipse einrichten Datenbankprogrammierung 8
K SQLite Datenbankprogrammierung 5
S SQLite oder RDBMS als Datei(nicht Client/Server) Datenbankprogrammierung 5
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
Kotelettklopfer SQLite Verhindern von doppelter Statement Ausführung Datenbankprogrammierung 25
L SQL-Statement SQL Statement doppelte Einträge finden Datenbankprogrammierung 9
C MySQL SQL Statement wir nicht ausgeführt Datenbankprogrammierung 11
G Datenbank Statement Datenbankprogrammierung 22
Dimax Erstellen ResultSet und Statement Datenbankprogrammierung 30
B MySQL Umkreissuche - brauche Hilfe bei SQL Statement Datenbankprogrammierung 12
M CSV Import - Dynamisches SQL Statement Datenbankprogrammierung 15
D Wiederverwendung / Recycling / Queuing von Statement Objekten Datenbankprogrammierung 1
D SQL Statement gesucht... Datenbankprogrammierung 15
J JDBC SQL Statement mit Parameter Datenbankprogrammierung 7
F Dynamischen String in SQL Statement einbinden Datenbankprogrammierung 9
L SQL Statement mit Switch-Case funktioniert nicht Datenbankprogrammierung 6
U PostgreSQL SELECT Statement Datenbankprogrammierung 5
A Problem mit Create-Statement Datenbankprogrammierung 9
LadyMilka MySQL Syntaxfehler im Statement Datenbankprogrammierung 3
A JDBC Prepared Statement Autoincrement Datenbankprogrammierung 3
P SQL-Statement Bei meinem Statement ist ein Fehler? Datenbankprogrammierung 2
P sql statement alter table foreign key Datenbankprogrammierung 4
T sql Statement Datenbankprogrammierung 9
B JDBC MySQL Statement Datenbankprogrammierung 3
A Sql Statement - Alle Zahlen größer 9 Datenbankprogrammierung 3
F Sql Statement Datenbankprogrammierung 12
A SQL-Statement prüfen Datenbankprogrammierung 3
W Statement als Klassenvariable Datenbankprogrammierung 27
I Select-Statement optimieren Datenbankprogrammierung 14
alex_fairytail MySQL SQL Statement Delete zwischen Datum1 und Datum2 Datenbankprogrammierung 5
M Access Update Statement Fehler update -> unmöglich? Datenbankprogrammierung 3
R Derby/JavaDB LIKE Statement mit Wildcard Datenbankprogrammierung 20
N Update Prepared Statement Fehler bei Argumenten Datenbankprogrammierung 3
R Select Statement als temporärer Table Datenbankprogrammierung 7
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
R Derby/JavaDB Select TOP Statement geht nicht Datenbankprogrammierung 3
S Null Pointer exception statement Datenbankprogrammierung 8
R Derby/JavaDB Insert Statement Probleme Datenbankprogrammierung 14
K statement.execute liefert false Datenbankprogrammierung 6
C PostgreSQL Prepared Statement Datenbankprogrammierung 7
N Prepared Statement mit unbekannter Anzahl von Where-Clauses Datenbankprogrammierung 30
S SQL Statement: executeUpdate Datenbankprogrammierung 15
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
T MySQL PreparedStatement mit INSERTs langsam, Batch-Statement auch Datenbankprogrammierung 4
M MySQL größere von zwei Zahlen in Update Statement Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben