# column count doesn't match value count at row 1



## Felix (26. Mrz 2006)

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:


```
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


----------



## André Uhres (27. Mrz 2006)

Vielleicht daran daß du addarr[6] zweimal hinzufügst?


----------



## abollm (27. Mrz 2006)

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.


----------



## SamHotte (28. Mrz 2006)

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 ...


----------



## bronks (28. Mrz 2006)

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?


----------



## Felix (28. Mrz 2006)

kk, danke damit funktioinierts, ich hatte tatsächlich einfach einen Wert zuviel übergeben. Viel erfolg noch bei deiner Suche bronks


----------



## SamHotte (28. Mrz 2006)

Den "richtigen" SQL-String bekommst du nicht mehr, aber das macht nichts:
PreparedStatement.getMetaData() bzw. PreparedStatement.getParameterMetaData() reichen eigentlich meist, um zu debuggen.


----------

