Использование поставщика членства SQL для членства в ASP.NET. Я использую first.last как имя пользователя, которое создается программно из деталей пользователя, заполненных формой.Когда имя пользователя ASP.NET существует, измените на имя пользователя (x)
Когда пользователь отправляет форму, я хочу, чтобы проверить, существует ли имя пользователя, и изменить его на username1, если это так, проверьте имя пользователя1 и укажите его имя пользователя2, если оно существует, и т. Д., Пока оно не станет уникальным имя пользователя.
Я не знаю, как выполнять хранимые процедуры, поэтому я пытаюсь использовать SQLDataReader для проверки того, существует ли имя пользователя.
Проблема в моей петле. Логика в основном заключается в том, чтобы установить логическое значение и продолжить цикл и добавить 1 к счетчику, пока он не найдет дубликат. Я прошел через это много раз, и даже когда он устанавливает значение boolean в 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();
}
Вы можете правильно выровнять фигурные скобки? его трудно прочитать outhere –
Вы считали, что произойдет, если два человека с одним и тем же базовым именем попытаются запустить это одновременно - они могут найти то же значение, что и новое имя, которое, очевидно, не будет выполнено для одного из них, когда вы на самом деле попытайтесь настроить их. –