2013-04-04 4 views
6

Я создаю приложение Windows с помощью C#. В моей форме входа я получаю . Выбранное свойство Command не было инициализировано до вызова метода заполнения.Свойство SelectCommand не было инициализировано перед вызовом «Заполнить». в WinForm

Вот код:

public partial class frmlogin : Form 
{ 
    SqlConnection con = new SqlConnection("Data Source=TH07L019;Initial Catalog=loginerror;Integrated Security=True"); 
    DataTable dt = new DataTable(); 
    SqlCommand cmd = new SqlCommand(); 
    SqlDataAdapter adp = new SqlDataAdapter(); 

    public frmlogin() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     cmd.Connection = con; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     con.Open(); 
     cmd.CommandText = "select * from login where username='" + txt1.Text + "' and password='" + txt2.Text +"'"; 
     adp.Fill(dt); 
     if (dt.Rows.Count > 0) 
     { 
      frmmain main = new frmmain(); 
      main.Show(); 
     } 
     else 
     { 
      MessageBox.Show("Please enter correct name and passowrd", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 
} 
+0

Вам нужно назначить 'объект SqlCommand' к' SqlDataAdapter' - просто как говорит ошибка. :) И, пожалуйста, загляните в параметризованные запросы - так как вы теперь код, который созрел для SQL Injection. – Tim

ответ

13

Вы должны указать выберите команду SqlDataAdapter перед заполнением вашего стола. Вы этого не делаете. Ваш объект SqlCommand никак не связан с вашим SqlDataAdapter.

adp.SelectCommand=cmd; 
1

Другой способ сделать бы просто передать SQLCommand в качестве аргумента в адаптере данных следующим образом -

SqlCommand cmd = new SqlCommand(); 
SqlDataAdapter adp = new SqlDataAdapter(cmd); 
Смежные вопросы