По данным MSDN.
http://msdn.microsoft.com/en-us/library/system.data.odbc.odbccommand.parameters.aspx
Когда для CommandType установлено значение Text, поставщик данных .NET Framework для ODBC не поддерживает передачу именованных параметров в оператор SQL или хранимую процедуру, вызываемую OdbcCommand. В любом из этих случаев используйте заполнитель с вопросительным знаком (?).
Итак, ваш запрос должен быть:
string sql = "insert into klant (firstname) values (?)"
Если у вас есть несколько параметров, они устанавливаются в порядке их добавления.
Кроме того, я думаю, что линия
string firstname = txtfirstname.ToString();
следует читать
string firstname = txtfirstname.Text();
Но это не то, что вызывает вашу непосредственную проблему.