column count doesn't match value count at row 1

Status
Nicht offen für weitere Antworten.

Felix

Bekanntes Mitglied
Hallo,

ich will in meinem Programm etwas zu einer MySQL Datenbank hinzufügen. Leider wird immer folgender Fehler geworfen:

column count doesn't match value count at row 1

Ich hab keine Ahnung was das bedeuten soll.

Ich füge den Datensatz so hinzu:

Code:
public void add(String[] addarr) {
		try {
			stat.executeUpdate("INSERT INTO ladict VALUES (" + addarr[0] + ", "
					+ addarr[1] + ", " + addarr[2] + ", " + addarr[3] + ", "
					+ addarr[4] + ", " + addarr[5] + ", " + addarr[6] + ", "
					+ addarr[7] + ", " + addarr[8] + ", " + addarr[9] + ", "
					+ addarr[10] + ", " + addarr[6] + ", " + addarr[11] + ", "
					+ addarr[12] + ", " + addarr[13] + ", " + addarr[14] + ")");
			
			//DEBUG
			System.out.println("WURDE ERFOLGREICH HINZUGEFÜGT");
		} catch (Exception e) {
			System.out.println("Exception beim hinzufügen eines Datensatzes:\n"
					+ e);
		}
	}

Wisst ihr woran es liegen könnte?

Gruß
der Felix
 
Wie A. Uhres schon vermutet hat, wird es wohl daran liegn, dass du zweimal den gleichen Wert zusätzlich zu den sonstigen Werten in die Tabelle einzufügen versuchst.

Die von dir angegebene Meldung ist eindeutig: die Anzahl der Spalten stimmt für den einzufügenden (ersten!) Datensatz nicht mit dr Anzahl der Spalten in der Tabelle überein. Und zwar versuchst du mindestens einen Wert mehr, als Spalten vorhanden sind, in die Tabelle einzufügen.
 
1. SQL-Statements auf die Weise zusammenzustückeln ist schwer zu debuggen. Versuch mal, statt dessen mit einem PreparedStatement zu arbeiten.
2. catch (Exception e) sorgt ebenfalls (meistens) dafür, dass man die eigentliche Fehlerursache erstmal nicht findet ...
 
SamHotte hat gesagt.:
1. SQL-Statements auf die Weise zusammenzustückeln ist schwer zu debuggen. Versuch mal, statt dessen mit einem PreparedStatement zu arbeiten ...
Schön, daß sich mit dem Debuggen von PreparedStatements jemand auskennt und hab da gleich mal ne Frage: Wie entlocke ich dem PreparedStatementObjekt den SQL, der ausgeführt werden soll?
 
kk, danke damit funktioinierts, ich hatte tatsächlich einfach einen Wert zuviel übergeben. Viel erfolg noch bei deiner Suche bronks
 
Den "richtigen" SQL-String bekommst du nicht mehr, aber das macht nichts:
PreparedStatement.getMetaData() bzw. PreparedStatement.getParameterMetaData() reichen eigentlich meist, um zu debuggen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben