c# - SqlConnection 为空,但为什么呢?

标签 c# sql .net sql-server ado.net

我想连接到我的 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();
}

最佳答案

您的 SqlCommandText 无效。正确的是(注意引号 '"):

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;

Can we stop using AddWithValue() already?

关于c# - SqlConnection 为空,但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47845824/

相关文章:

c# - Dispatcher、BackgroundWorker 还是 Parallel?

c# - 扩展用户管理器

mysql - 想改进 SQL 查询

c# - 如何在 C# 中从 TKey 获取字典 TValue?

c# - WPF - 程序运行时图像不显示

c# - 确保类是线程安全的,只有属性(任何专门用于此的 .NET 4.0 技术?)

javascript - 使用 JavaScript 为 SQL 清理数据

php - 计数并回应事件

.net - Silverlight 本地存储

c++ - 窗口化 XAML 应用程序