Einfügen von Daten in mySQL-Tabelle mit java
Ich habe eine vordefinierte Tabelle in einer mySQL-Datenbank:
Arbeite ich auf das speichern von eingegebenen Daten wird vom Benutzer an der Datenbank, aber ich kann nicht scheinen, um alle Daten zu speichern in die Datenbank. Mit dem folgenden code, den ich versuche zu aktualisieren, die erste Zeile der Datenbank (ID: 1 bis 2: 0). Was mache ich falsch?
private java.sql.Connection con = null;
private PreparedStatement pst = null;
private ResultSet rs = null;
private String url = "jdbc:mysql://localhost:8889/deliveryEarn";
private String user = "root";
private String password = "root";
try {
con = DriverManager.getConnection(url, user, password);
Statement st = (Statement) con.createStatement();
st.executeUpdate("INSERT INTO incomeCalc " + "VALUES (3, 75, 6, 25, 18.50)");
con.close();
}
catch (SQLException ex) {
Logger lgr = Logger.getLogger(deliveryMain.class.getName());
lgr.log(Level.SEVERE, ex.getMessage(), ex);
}
Wenn Ihr keine Fehlermeldung erhalten, ändern Sie die SqlException-Ausnahme, und sehen, welche Fehler du bekommst
warum verwenden Sie gerade sql-tun Sie Ihre einfügen und nicht einen ORM wie hibernate oder Ibatis statt ?
Ja, Es ist besser, ORM wie Hibernate oder iBatis
warum verwenden Sie gerade sql-tun Sie Ihre einfügen und nicht einen ORM wie hibernate oder Ibatis statt ?
Ja, Es ist besser, ORM wie Hibernate oder iBatis
InformationsquelleAutor David Tunnell | 2012-08-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, es wird nicht funktionieren, da die Anzahl der Werte ist kleiner als die Anzahl der Spalten in Ihrer Tabelle. Was Sie tun müssen, ist geben Sie die Namen der Spalten entsprechen der Anzahl der Messwerte.
sollte es
w3School: (EINFÜGEN)
Es ist möglich, schreiben Sie die INSERT INTO-Anweisung in beiden Formen.
Die erste form, die nicht geben Sie die Spalte-Namen, wo die Daten eingefügt werden, nur Ihre Werte:
Die zweite form gibt sowohl den Spaltennamen und die Werte eingefügt werden:
InformationsquelleAutor John Woo
Ihre insert-Anweisung sollte sein:
In anderen Worten: deine Aussage ist die fehlende Spalte Namen.
INSERT
- Anweisung sind optional, obwohl es ist nicht klug, um nicht zu geben, finden Sie unter dev.mysql.com/doc/refman/5.5/en/insert.htmlSpaltennamen sind NICHT optional, wenn Sie eine insert-Anweisung mit weniger Spalten als real-Spalte in der Tabelle.
InformationsquelleAutor munyengm
Müssen Sie die Spalte-Namen, zum Beispiel:
InformationsquelleAutor Lo Juego
Eine. Entweder übergeben Sie die Werte für alle Spalten der Tabelle in der Reihenfolge, die Sie definiert sind in der MYSQL-DB. Hier sehen wir 7 Spalten in der Tabelle und stellen Sie nur 5 Werte...
oder
B. Nutzen Sie diese syntax
InformationsquelleAutor SiB
wie munyengm die Aussage in der du rcase wäre :
"INSERT INTO incomeCalc(ID, TIPPS, STUNDEN -, GAS -, HOURLY_EARNINGS)" +
"WERTE (3, 75, 6, 25, 18.50)"
aber wahrscheinlich werde loop-Wert, und Sachen, so würde ich empfehlen, verwenden Sie eine vorbereitete Anweisung statt, ist diese sql-injection verhindern.
dann
InformationsquelleAutor Chris
Ersten
READONLY = false;
Gibt es einige Einschränkungen.Sie müssen
[Name_table$]
und\
vor und nach derCOLUMN_NAMES
. wie diese:InformationsquelleAutor Guga
Dieses format für mich gearbeitet, wie Sie es sehen, keine zusätzlichen Kommas, Schrägstriche oder was sonst nötig war:
InformationsquelleAutor Dan