Не помещайте заполнители параметров в SQL разделители строк.
Неправильно:
string statement = "INSERT INTO people (type, cpr, name, address)" +
"VALUES('citizen', ':cpr', ':name', ':address')";
Справа:
string statement = "INSERT INTO people (type, cpr, name, address)" +
"VALUES('citizen', :cpr, :name, :address)";
Ваш комментарий:
Я еще раз взглянул на видеоурок, который вы используете, и вижу, что он показывает синтаксис Oracle. Имейте в виду, что каждый бренд SQL имеет свой синтаксис, несмотря на использование стандартного языка SQL. Таким образом, вы должны использовать документацию и учебные пособия для бренда, который вы используете.
Я не C# разработчик, поэтому я сначала не заметил, что синтаксис для параметров запроса в MySQL отличается от Oracle.
https://dev.mysql.com/doc/connector-net/en/connector-net-programming-prepared-preparing.html показывает пример, в котором для параметров вместо :
используется @
. Поэтому я предполагаю, что вы можете исправить свой код, используя этот синтаксис:
string statement = "INSERT INTO people (type, cpr, name, address)" +
"VALUES('citizen', @cpr, @name, @address)";
Затем добавьте значения:
cmd.Parameters.AddWithValue("@cpr", cpr_txtbx.Text);
cmd.Parameters.AddWithValue("@name", name_txtbx.Text);
cmd.Parameters.AddWithValue("@address", address_txtbx.Text);