Laut MSDN.
http ://msdn.microsoft.com/en-us/library/system.data.odbc.odbccommand.parameters.aspx
Wenn CommandType auf Text festgelegt ist, unterstützt der .NET Framework-Datenanbieter für ODBC keine Übergabe benannter Parameter an eine SQL-Anweisung oder an eine gespeicherte Prozedur, die von einem OdbcCommand aufgerufen wird. Verwenden Sie in beiden Fällen den Platzhalter Fragezeichen (?).
Ihre Abfrage sollte also lauten:
string sql = "insert into klant (firstname) values (?)"
Wenn Sie mehrere Parameter haben, werden sie in der Reihenfolge festgelegt, in der Sie sie hinzufügen.
Außerdem finde ich die Zeile
string firstname = txtfirstname.ToString();
sollte lauten
string firstname = txtfirstname.Text();
Aber das ist nicht die Ursache Ihres unmittelbaren Problems.