Использование поставщика членства SQL для членства в ASP.NET. Я использую first.last в качестве имени пользователя, которое создается программно из данных пользователя, заполненных в форме.
Когда пользователь отправляет форму, я хочу иметь возможность проверить, существует ли имя пользователя, и изменить его на username1, если это так, проверить username1, и сделать его username2, если он существует, и т. Д., Пока он не станет уникальным именем пользователя. .
Я не знаю, как делать хранимые процедуры, поэтому я пытаюсь использовать SQLDataReader, чтобы проверить, существует ли имя пользователя.
Проблема в моей петле. Логика в основном состоит в том, чтобы установить логическое значение и продолжать цикл и добавлять 1 к счетчику, пока он не найдет дубликат. Я проходил через это много раз, и даже когда он устанавливает логическое значение в false, он продолжает циклически повторяться.
Идеи, пожалуйста?
Код:
protected void Membership_add()
{
SqlConnection con = new SqlConnection(connectionString);
string NewUserNameString = FirstName.Text + "." + LastName.Text;
//Check for duplicate aspnet membership name and add a counter to it if exists
// Check for valid open database connection before query database
bool match = true;
SqlDataReader _SqlDataReader = null;
string TestNameString = NewUserNameString;
string selectDupeString = "SELECT UserId FROM aspnet_Users WHERE UserName = '" + TestNameString + "'";
SqlCommand SQLdatareaderCmd = new SqlCommand(selectDupeString, con);
int UserNameCounter = 0;
con.Open();
while (match = true)
{
//Open the connection
try
{
//Read the table
_SqlDataReader = SQLdatareaderCmd.ExecuteReader();
}
catch (Exception ex)
{
lblDatareaderEx.Text = "An Exception occurred. " + ex.Message + " " + ex.GetType().ToString();
}
if (_SqlDataReader.HasRows)
{
//match = true;
//increase counter by 1 for each record found and change First.Name to First.Namex
TestNameString = NewUserNameString;
UserNameCounter = UserNameCounter + 1;
TestNameString = TestNameString + UserNameCounter.ToString();
_SqlDataReader.Close();
_SqlDataReader.Dispose();
selectDupeString = "SELECT UserId FROM aspnet_Users WHERE UserName = '" + TestNameString + "'";
SQLdatareaderCmd = new SqlCommand(selectDupeString, con);
}
else
{
// close sql reader
_SqlDataReader.Close();
_SqlDataReader.Dispose();
//get out of loop
match = false;
}
}
con.Close();
con.Dispose();
}