我想连接到我的 GuvenliBilgisayarim
数据库。但是 baglanti
是 null - 为什么?
我的代码是:
SqlConnection baglanti = new SqlConnection("Data Source=DILEKZ\\SQLEXPRESS;Initial Catalog=GuvenliBilgisayarim;Integrated Security=True");
private void btn_giris_Click(object sender, EventArgs e)
{
baglanti.Open();
SqlCommand komut = new SqlCommand("select * from Login where kullanici_adi='" + txt_kulAdi.Text + " and kullanici_sifre=" + txt_sifre.Text +"',baglanti");
komut.Connection = baglanti;
SqlDataReader dr = komut.ExecuteReader();
if (dr.Read())
{
Rapor rpr = new Rapor();
rpr.Show();
}
else
{
MessageBox.Show("Kullanıcı adı veya şifre yanlış");
}
dr.Close();
}
最佳答案
您的 SqlCommand
的 Text
无效。正确的是(注意引号 '"
):
SqlCommand komut = new SqlCommand("select * from Login where kullanici_adi='" + txt_kulAdi.Text + "'" +
" and kullanici_sifre='" + txt_sifre.Text + "'",baglanti);
但是这种字符串连接对于SQL injection是开放的.尝试 parameterized queries反而。像这样:
SqlCommand komut = new SqlCommand("select * from Login where kullanici_adi=@kulAdi" +
" and kullanici_sifre=@sifre",baglanti);
komut.Parameters.AddWithValue("@kulAdi",txt_kulAdi.Text);
komut.Parameters.AddWithValue("@sifre",txt_sifre.Text);
虽然直接指定类型并使用Value
属性比AddWithValue
更好:
komut.Parameters.Add("@kulAdi", SqlDbType.VarChar).Value = txt_kulAdi.Text;
关于c# - SqlConnection 为空,但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47845824/