2013-04-04 47 views
6

C# kullanarak bir windows uygulaması yapıyorum. Giriş formumda, doldurma yöntemini çağırmadan önce Seç Komutu özelliği başlatılmamış.SelectCommand özelliği, 'Fill' çağırılmadan önce başlatılmamış. 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

Sen 'SqlDataAdapter' için' SqlCommand' nesne atamak gerekir - sadece hata diyormuş gibi. :) Ve lütfen parametreli sorgulara bakın - kodunuz SQL Injection için olgun olduğunuz için. – Tim

cevap

13

Sen tablo doldurmadan önce SqlDataAdapter seçme komutu belirtmek zorunda: Burada

kodudur. Bunu yapmıyorsun. SqlCommand nesneniz, SqlDataAdapter'ınıza herhangi bir şekilde bağlı değil.

adp.SelectCommand=cmd; 
1

aşağıdaki gibi basitçe veri adaptörüne bağımsız değişken olarak SqlCommandSystem.Data.CommandBehavior.SequentialAccess geçmek olacaktır başarmak için başka bir yol -

SqlCommand cmd = new SqlCommand(); 
SqlDataAdapter adp = new SqlDataAdapter(cmd); 
İlgili konular