2017-01-10 3 views
0

Я пытаюсь создать функцию в форме «создать пользователя» в ASP.NET.Проверьте, существует ли пользователь в таблице через SQL

Я попытался выяснить, как получить инструкцию if из функции проверки SQL из моего файла класса, чтобы узнать, использовалось ли имя пользователя и адрес электронной почты.

Это то, что я пытался сделать.


файл Класс:

public DataTable ValidateUSER(string Username) 
{ 
    string SQL = "SELECT fldUsername FROM tblBruger WHERE fldUsername LIKE 
    @username"; 

    SqlCommand CMD = new SqlCommand(SQL); 

    CMD.Parameters.AddWithValue("@username", Username); 

    return DA.GetData(CMD); 
} 

Мой отделенный код:

LoginClass objLogin = new LoginClass(); 

protected void ButtonCheck_Click(object sender, EventArgs e) 
{ 
    string txtUser = txtUsername.Text; 


    if (obj.ValidateUSER(txtUser) == txtUser) 
    { 
     litResult.Text = "Username already taken"; 
    } 
+0

Вы никогда не выполнение SQL-команды, увидеть эту страницу из документации: https://msdn.microsoft.com/en-us/library/fksx3b4f.aspx – maccettura

+0

подумали ли вы об использовании шаблона по умолчанию, созданного Asp.NET при создании нового приложения? Просто создайте новое приложение с отдельными учетными записями пользователей, и все это сделано для вас, нет необходимости изобретать велосипед на этом – maximdumont

+0

Никогда не слышал о шаблоне? Это школьное задание, поэтому нам нужно работать, чему нас учат. –

ответ

0

Я не уверен, что DA есть, но я предполагаю, что это какое-то рамка доступа к данным, которые будут выполняться входящую команду и вернуть таблицу данных. Если это так, вам просто нужно внести небольшую модификацию.

public string ValidateUser(string userName) 
{ 
    string sql = "SELECT fldUsername FROM tblBruger WHERE fldUsername LIKE @username"; 
    SqlCommand cmd= new SqlCommand(sql); 
    cmd.Parameters.AddWithValue("@username", userName); 
    DataTable table = DA.GetData(cmd); 
    if (table.Rows.Count != 0) 
    { 
     return table.Rows[0].Item[0] as string; 
    } 
    return null; 
} 

Также уточните здесь. Обратите внимание, я сделал чек регистронезависимое, что кажется разумным для имени пользователя:

var s = obj.ValidateUser(txtUserName.Text); 
if (s != null && s.ToLower() == txtUserName.Text.ToLower()) 
{ 
    litResult.Text = "Username already taken"; 
} 

Отметим также, я изменил капитализацию некоторых из ваших идентификаторов, так что они согласуются с C# coding conventions опубликованной Microsoft.

+0

Я исправил его, спасибо! Ваш код не работает. Я сохранил SQL так же просто изменил if (s! = Null) { litResult.Text = "Имя пользователя уже выполнено"; } –

0

Вы должны использовать SqlDataReader

string SQL = "SELECT fldUsername FROM tblBruger WHERE fldUsername LIKE 
    @username"; 

SqlCommand CMD = new SqlCommand(SQL); 

SqlDataReader rdr = CMD.ExecuteReader(); 

while (rdr.Read()) 
{ 
//do something with result set 
} 
Смежные вопросы