У меня есть код, который выглядит следующим образом в классе, который расширяет MembershipProvider (код ниже был анонимным и слегка упрощен):
SqlConnection conn = new SqlConnection("Integrated Security=;Persist Security Info=False;User ID=WEBUSER;Password=WEBPASSWORD;Initial Catalog=DATABASENAME;Data Source=SERVERNAME");
SqlCommand cmd = new SqlCommand("SELECT Password FROM Membership " +
" WHERE Username = ?", conn);
cmd.Parameters.Add("@Username", System.Data.SqlDbType.NVarChar, 25).Value = "TestUser";
SqlDataReader reader = null;
try
{
conn.Open();
reader = cmd.ExecuteReader(); // Execution breaks here.
Код прерывается, когда он попадает в cmd.ExecuteReader (); Выдается исключение "System.Data.SqlClient.SqlException: неправильный синтаксис рядом с '?'."
Кажется, он ведет себя так, как будто "?" в тексте команды неправильно интерпретируется как параметр. Я не могу понять, что я делаю неправильно. Я признаю, что мой ASP.NET немного ржавый, но я писал код, подобный этому, десятки раз раньше, и все, что я написал выше, выглядит так, как будто оно соответствует шаблонам использования, которые я вижу в учебниках и в примерах MSDN. Может кто-нибудь сказать мне, что я делаю не так?
Целевая версия .NET - 4.0. ASP.NET запускается на моем локальном компьютере в среде отладки в Visual Web Developer Express 2010. База данных - SQL Server 2005.