Hallo Leute!
Ich bin gerade dabei mich mit DB zu beschäftigen. Habe eine Tabelle angelegt und möchte nun über ein Java Programm neue Datensätze hinzufügen. Das ist soweit auch kein Problem, solange die Daten im Code festgelegt sind. Nur ich möchte, das die Werte über die Konsole eingegeben werden können. Hierzu habe ich entsprechende Variablen deklariert und diese dann in die SQL-Abfrage eingebaut. Es kommt dann zwar keine Fehlermeldung, die Datensätze werden aber auch nicht hinzugefügt.
Also wie oben bereits erwähnt: mit
int anz = befehl.executeUpdate("insert into land values (1, 'Umbrien', 7);");
funktioniert das Ganze.
Aber mit mit Variablen, also mit
int anz = befehl.executeUpdate("insert into land values (p, region, zahl);");
hat es nicht geklappt.
Kann mir jemand von Euch sagen, wie ich Datensätze variabel über die Konsole in die DB einfügen kann, bzw. was ich am Code ändern muß?
Vielen Dank schon mal im Voraus!
Mit freundlichen Grüßen, Calimero! :?:
Ich bin gerade dabei mich mit DB zu beschäftigen. Habe eine Tabelle angelegt und möchte nun über ein Java Programm neue Datensätze hinzufügen. Das ist soweit auch kein Problem, solange die Daten im Code festgelegt sind. Nur ich möchte, das die Werte über die Konsole eingegeben werden können. Hierzu habe ich entsprechende Variablen deklariert und diese dann in die SQL-Abfrage eingebaut. Es kommt dann zwar keine Fehlermeldung, die Datensätze werden aber auch nicht hinzugefügt.
Code:
package mysql;
import java.sql.*;
import java.io.*;
import java.util.*;
public class Bundesländer {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
// Treiber laden
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Treiber wurde erfolgreich geladen!");
}
catch (ClassNotFoundException e){
System.out.println("Fehler beim Laden des JDBC-Treibers");
return;
}
// Verbindung zur Datenbank aufbauen
String url ="jdbc:mysql://127.0.0.1:8889/bund";
String benutzername ="root";
String passwort ="root";
int p;
String region;
int zahl;
Statement befehl = null;
Connection verbindung = null;
try {
verbindung = DriverManager.getConnection(url,benutzername,passwort);
befehl = verbindung.createStatement();
}
catch (Exception e){
System.err.println("Verbindung zu " + url + " konnte nicht hergestellt werden");
}
// Datensätze hinzufügen
while (true){
System.out.println("Geben Sie die Position ein: ('0' für Ende)");
p = sc.nextInt();
if (p==0)
break;
System.out.println("Geben Sie das Land ein: ");
region = sc.next();
System.out.println("Geben Sie die Einwohnerzahl ein: ");
zahl = sc.nextInt();
try {
verbindung.setReadOnly(false);
int anz = befehl.executeUpdate("insert into land values (p, region, zahl);");
verbindung.commit();
System.out.println("Eingefügte Datensätze: " + anz);
}
catch (Exception e){
}
}
// Daten auslesen
try {
ResultSet datenmenge;
datenmenge = befehl.executeQuery("select * from land");
// Einzelne Datensätze ausgeben
String land;
int einw;
System.out.println("");
System.out.println("------------------------------------------");
System.out.println("Bundesland Einwohner");
System.out.println("------------------------------------------");
while(datenmenge.next()){
land = datenmenge.getString("Land");
einw = datenmenge.getInt("Einwohner (in Mio)");
System.out.println(String.format("%1$-20s%2$-20s", land,einw));
}
verbindung.close();
}
catch (Exception e){
e.printStackTrace();
}
}}
Also wie oben bereits erwähnt: mit
int anz = befehl.executeUpdate("insert into land values (1, 'Umbrien', 7);");
funktioniert das Ganze.
Aber mit mit Variablen, also mit
int anz = befehl.executeUpdate("insert into land values (p, region, zahl);");
hat es nicht geklappt.
Kann mir jemand von Euch sagen, wie ich Datensätze variabel über die Konsole in die DB einfügen kann, bzw. was ich am Code ändern muß?
Vielen Dank schon mal im Voraus!
Mit freundlichen Grüßen, Calimero! :?: