Ошибка, вероятно, вызвана наличием скобок после имени таблицы, но это простое исправление.
Ваша настоящая проблема заключается в конкатенации строк для ваших значений.
Это нет-нет в мире sql, потому что это может быть источником многих ошибок синтаксического анализа (например, наличие одинарной кавычки в значениях может нарушить синтаксис, и DateTime.Now преобразуется в строка, соответствующая правилам, которые не всегда понятны движку sql parser).
Но самым важным является возможность инъекции Sql.
Вот несколько ссылок, чтобы начать ваше обнаружение для этой большой угрозы безопасности
Как я могу объяснить Sql Injection без технического жаргона .
Как работает SQL-инъекция из комикса XKCD «Таблицы Бобби»?
Таким образом, единственное исправление - через параметризованный запрос.
string str = "insert into AdminAssistant
(Aname,Aphone,Amail,A_Address,A_City,A_Gender,A_Password,
Aroll,MetaDescription,Media,RegisterDate,A_Status)
values(@name,@phone,@mail,@address,@city,@gender,@pass
@roll,@descr,@media,@regdata,'Active')";
using(SqlConnection con = new SqlConnection(......))
using(SqlCommand cmd = new SqlCommand(str, con))
{
con.Open();
cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = TextBox7.Text;
... other varchar parameters
cmd.Parameters.Add("@regdataq", SqlDbType.DateTime).Value = DateTime.Now;
... complete the parameters collection
cmd.ExecuteNonQuery();
}
И я забыл поговорить о хранении паролей в виде открытого текста в базе данных. Это еще одно очень важное соображение для вашей безопасности. Вот еще одна ссылка с полезной информацией
Лучший способ сохранить пароль в базе данных