Hallo, ich habe die folgende Klasse, mit der ich mit vorher aufgenommen Spaltennamen und Datentypen eine Tabelle mit SQl erstellen möchte.
Die Bedeutung der VAriablen ist:
relName = Name der Tabelle
spaltenAnzahl = Anzahl der Spalten der Tabelle
ArrayList<String> spaltenNamenArray = Eine Liste mit den Namen der Spalten
ArrayList<String> datentypNamenArray = Eine Liste mit den Datentypen der Spalten.
Leider wird bei mir jedes mal keine Tabelle erstellt. Ich erhalte auch keine Fehlermeldung. Das Programm bleibt einfach stehen.
Hier die Klasse "Erstellung", in welcher die Tabelle erstellt werden soll:
Die einzelnen Variablen kommen aus der Klasse "Verwaltung". Diese kann ich aber richtig sortiert auslesen:
Weiß jemand, warum die Tabelle nicht erstellt wird?
Danke schonmal
Die Bedeutung der VAriablen ist:
relName = Name der Tabelle
spaltenAnzahl = Anzahl der Spalten der Tabelle
ArrayList<String> spaltenNamenArray = Eine Liste mit den Namen der Spalten
ArrayList<String> datentypNamenArray = Eine Liste mit den Datentypen der Spalten.
Leider wird bei mir jedes mal keine Tabelle erstellt. Ich erhalte auch keine Fehlermeldung. Das Programm bleibt einfach stehen.
Hier die Klasse "Erstellung", in welcher die Tabelle erstellt werden soll:
Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.ArrayList;
import java.sql.*;
public class Erstellung {
public static void erstellung(String relName, int spaltenAnzahl, ArrayList<String> spaltenNamenArray, ArrayList<String> datentypNamenArray) {
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:test.db");
System.out.println("Opened database successfully");
stmt = c.createStatement();
String sql = "CREATE TABLE " + relName + "(";
for(int i = 0; i < (spaltenAnzahl - 1) ; i++) {
sql += spaltenNamenArray.get(i) + " " + datentypNamenArray.get(i) + ", ";}
sql += spaltenNamenArray.get(spaltenAnzahl-1) + " " + datentypNamenArray.get(spaltenAnzahl-1);
sql += ")";
stmt.executeUpdate(sql);
stmt.close();
c.close();
} catch ( Exception e ) {
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
}
System.out.println("Table created successfully");
}
}
Die einzelnen Variablen kommen aus der Klasse "Verwaltung". Diese kann ich aber richtig sortiert auslesen:
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Verwaltung {
private static ArrayList<String> spaltenNamenArray= new ArrayList<>();
private static ArrayList<String> datentypNamenArray = new ArrayList<>();
private static int spaltenAnzahl = 0;
private String erstellName = "";
private static String spaltenAnzahlString = "";
private static String relName = "";
public static void main(String[] args) throws IOException {
//Auslesen.auslesen();
// TabelleLöschen.Löschung();
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Willkommen bei der Mitarbeiterverwaltung.");
System.out.println("Möchte Sie eine Tabelle erstellen?");
String input = in.readLine();
if(input.equals("Ja") || input.equals("ja") || input.equals("JA")) {
System.out.println("Wie soll die Tabelle heißen?");
relName = in.readLine();
System.out.println("Wie viele Spalten so die Tabelle haben?");
spaltenAnzahlString = in.readLine();
spaltenAnzahl = Integer.parseInt(spaltenAnzahlString);
for(int i = 1; i <= spaltenAnzahl; i++) {
System.out.println("Wie soll die " + i + ". heißen?");
String spaltenName = in.readLine();
spaltenNamenArray.add(spaltenName);
}
for(int i = 1; i<= spaltenAnzahl; i++) {
System.out.println("Was soll der Datentyp der " + i + ". Spalten mit dem Namen " + spaltenNamenArray.get((i-1)) + " sein ");
String datentypName = in.readLine();
datentypNamenArray.add(datentypName);
}
/* Tests:
for (int i = 0; i < spaltenNamenArray.size(); i++){
System.out.println((i+1) + ". " + spaltenNamenArray.get(i));
}
for (int i = 0; i < datentypNamenArray.size(); i++){
System.out.println((i+1) + ". " + datentypNamenArray.get(i));
} */
}
else {
System.out.println("Soll das Programm beendet werden?");
String beenden = in.readLine();
if(beenden.equals("Ja") || beenden.equals("ja") || beenden.equals("JA")) {
System.exit(0);
}
else {
main(args);
}
Erstellung.erstellung(relName, spaltenAnzahl, spaltenNamenArray, datentypNamenArray);
}
// TabelleLöschen.Löschung();
// Erstellung.erstellung();
// Hinzufügen.hinzufügen();
// Auslesen.auslesen();
// Aktualisieren.aktualisieren();
// Auslesen.auslesen();
}
}
Weiß jemand, warum die Tabelle nicht erstellt wird?
Danke schonmal