В вашем запросе есть простая синтаксическая ошибка. Вы добавляете запятую после последнего значения и забываете закрыть оператор VALUES. Но это, хотя легко исправить, не является правильным способом построения оператора SQL.
Вы всегда должны использовать параметризованный запрос и никогда не забывать располагать объекты, такие как соединение, когда вы с ними сделали.
string MySQL = @"INSERT INTO users
(email, pname, accountname, pid, age, passw)
VALUES(@email, @pname,@account,@pid, @age, @passw)";
string strConnection = "......";
using(OleDbConnection con = new OleDbConnection(strConnection))
using(OleDbCommand cmd = new OleDbCommand(MySQL, con))
{
con.Open();
cmd.Parameters.Add("@email", OleDbType.VarWChar).Value = Request.Form["email"];
cmd.Parameters.Add("@pname", OleDbType.VarWChar).Value = Request.Form["pname"];
cmd.Parameters.Add("@account", OleDbType.VarWChar).Value = Request.Form["accountname"];
cmd.Parameters.Add("@pid", OleDbType.VarWChar).Value = Request.Form["pid"];
cmd.Parameters.Add("@age", OleDbType.VarWChar).Value = Request.Form["age"];
cmd.Parameters.Add("@passw", OleDbType.VarWChar).Value = Request.Form["passw"];
cmd.ExecuteNonQuery();
}
Теперь этот подход, хотя он кажется более многословным, намного яснее. Больше нет конкатенации кусочков строк с правильными кавычками вокруг этих значений. Больше никаких глупых синтаксических ошибок, и никто не сможет написать взлом SQL-кода для вашей базы данных, используя входные значения.
См. Sql Injection
Есть еще одна проблема с точки зрения безопасности. У вас есть четкий пароль, хранящийся в базе данных, и это не считается хорошей практикой.
См. Лучший способ хранить пароли в базе данных