2013-06-18 3 views
0

Я новичок в C#, и я пытаюсь создать страницу входа в систему, где пользователь вводит имя пользователя и пароль. Затем это считывается из базы данных, чтобы проверить, что имя пользователя и пароль находятся там. Я установил соединение и, похоже, работает, потому что в этом коде, если я введу заголовок столбца, он позволит мне войти, но не какие-либо значения из этого столбца. Как я могу получить значения, которые он принимает?C# log in page verification from database

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.SqlClient; 

namespace BrokerSolution 
{ 
    public partial class LogIn : Form 
    { 
     public static String User ; 
     public static String pass; 
     public LogIn() 
     { 
      InitializeComponent(); 

     } 

     private bool ValidateFunction(string User, string pass) 
     { 
      bool boolReturnvalue = false; 
      String strConnection = "Server=****; Database=*****; User Id=******; password=*****"; 
      SqlConnection UGIcon = new SqlConnection(strConnection); 
      String LogInQuery = "SELECT user_name, sign_in FROM Users"; 
      SqlCommand loginCommand = new SqlCommand(LogInQuery, UGIcon); 
      SqlDataReader dr; 
      UGIcon.Open(); 
      dr = loginCommand.ExecuteReader(); 

      while (dr.Read()) 
      { 
       if ((User == dr["user_name"].ToString()) & (pass == dr["sign_in"].ToString())) 
       { 
        boolReturnvalue = true; 
       } 

       dr.Close(); 
       return boolReturnvalue; 


      } 
      return boolReturnvalue; 
     } 
     private void button1_Click(object sender, EventArgs e) 
     { 
      User = UsernametextBox.Text; // 
      pass = PasswordtextBox.Text; 
      SqlDataReader dr; 
      if (User.Equals(_40029562DataSet.users.user_nameColumn.ToString())) 
      {new Dashboard().Show();} 
      else 
      { 
       new NewQuote().Show(); 
      } 



     } 




    } 
} 
+0

Вы получаете все столбцы, используйте что-то вроде «SELECT user_name FROM Users WHERE sign_in = @password AND user_name = @username», и, таким образом, если ничего не было возвращено, они дали плохие учетные данные. – Jonesopolis

+0

также просто возвращает true, когда вы находите хит в вашем операторе if остальная часть цикла while была бы ненужной в этом пункте – Jonesopolis

ответ

0

Попробуйте положить это в вашей кнопки подпрограммой:

 User = UsernametextBox.Text; // 
     pass = PasswordtextBox.Text; 
     if (ValidateFunction(User,pass)) 
     {new Dashboard().Show();} 
     else 
     { 
      new NewQuote().Show(); 
     } 
0

Является ли база данных на удаленном хосте? Вам, скорее всего, придется добавить свой ip в белый список в своей базе данных, чтобы вы могли подключиться. У меня была эта точная проблема несколько недель назад, я мог получить доступ только к именам таблиц и столбцов, но никаких записей.

Если это локальная база данных, просто используйте проверку подлинности Windows. В противном случае попробуйте выполнить проверку соединения telnet в консоли запуска Windows, чтобы попытаться выполнить ping-сервер.