MSDNによると。
CommandTypeがTextに設定されている場合、ODBC用の.NET Frameworkデータプロバイダーは、SQLステートメントまたはOdbcCommandによって呼び出されるストアドプロシージャへの名前付きパラメーターの受け渡しをサポートしていません。これらのいずれの場合でも、疑問符(?)プレースホルダーを使用してください。
したがって、クエリは次のようになります。
string sql = "insert into klant (firstname) values (?)"
複数のパラメータがある場合は、追加した順に設定されます。
また、ラインだと思います
string firstname = txtfirstname.ToString();
読む必要があります
string firstname = txtfirstname.Text();
しかし、それはあなたの当面の問題を引き起こしているものではありません。