2014-02-06 5 views
1

Это первый раз, когда я работаю с Object Oriented C# в базе данных, поэтому я пытаюсь сделать логин для своей CRM-системы с параметризованным SQL-Query. Запрос проверяет, соответствуют ли текстовые поля «Username» и «Password» каким-либо записям в базе данных, и если это так, оно заполняет DataTable только для целей тестирования, чтобы увидеть, происходит ли какое-либо событие, но ничего не происходит, Da пуст все время ,Параметрированный вход в базу данных не работает

  1. Вот код, который необходимо отправить текст из текстовых полей в параметризованный запрос, а затем в «Запросе метод выполнения»

    private void bLoggaIn_Click(object sender, EventArgs e) 
    { 
        string sql = "SELECT * FROM Anvandare WHERE anvandarnamn = @anvandarnamn AND losenord = @losenord"; 
    
        SqlCommand sqlCmd = new SqlCommand(sql); 
    
        sqlCmd.Parameters.AddWithValue("@anvandarnamn", tbAnvandarnamn.Text.Trim().ToString()); 
        sqlCmd.Parameters.AddWithValue("@losenord", tbLosenord.Text.Trim().ToString()); 
    
        clsDB.ReadFromDatabase(sqlCmd); 
    } 
    
  2. Это метод, который должен выполнить запрос к базе данных и затем верните 0, если нет совпадения, или 1, если есть совпадение, но на данный момент оно просто заполняет DataTable с соответствующей записью, только для целей тестирования, но это не работает, DataTable всегда пуст, что означает, t найти совпадение.

    public static void ReadFromDatabase(SqlCommand sqlCmd) 
    { 
        try 
        { 
         if (!(anslutning.State == ConnectionState.Open)) 
          anslutning.Open(); 
    
         sqlCmd.Connection = anslutning; 
    
         SqlDataAdapter sqlDa = new SqlDataAdapter(); 
         sqlDa.SelectCommand = sqlCmd; 
    
         DataTable dt = new DataTable(); 
         sqlDa.Fill(dt); 
    
         anslutning.Close(); 
        } 
        catch (SqlException undantag) 
        { 
         string felmeddelande = undantag.Message; 
        } 
    } 
    

Так почему же она не работает? Я не понимаю, что это должно работать или я что-то пропустил?

ответ

2

Вы действительно хотите использовать текстовое поле tbLosenord дважды?

sqlCmd.Parameters.AddWithValue("@anvandarnamn", tbLosenord.Text.Trim().ToString()); 
sqlCmd.Parameters.AddWithValue("@losenord", tbLosenord.Text.Trim().ToString()); 

Для таких задач я поставил точку останова (нажмите на левой стороне окна редактора кода в Visual Studio) и использовать отладчик. MSDN имеет много tutorials на отладчике, и вы можете найти видео на YouTube, чтобы объяснить это более дружелюбным для новичков способом.

Смежные вопросы