如何将 SQL 数据添加到变量中?

How to add SQL data into variable?

如何在 C# 中将 SQL 数据添加到变量中?感谢您的帮助。

 string user = textBox1.Text;
    string password = textBox2.Text;
    con = new SqlConnection("...");//actually, there is a connection string but because of security, I'm not sharing it with you.
    com = new SqlCommand();
    con.Open();
    com.Connection = con;
    com.CommandText = "Select*From login where username='" + textBox1.Text +
        "'And sifre='" + textBox2.Text + "'";
    dr = com.ExecuteReader();
    if (dr.Read())
    {
      
    }

这是我的登录代码,它将打开一个新表单,但首先我应该找到它的用户名数据并将其放入一个变量中。

这里有一个要遵循的模式,将您的数据操作放在一个单独的 class 中,然后调用您的表单。这里 Login class 可以是任何你想用所需属性调用它的东西。

public class Login
{
    public int Id { get; set; }
    . . .
}

模拟数据 class,这里因为使用 select * 而不是仅指定必需的列我假设第一列是主键,它可能会也可能不会根据需要调整并添加other columns/properties 到 Login class 实例。

public class DataOperations
{
    // caller validates parameters have values
    public static Login DoSomething(string userName, string sifre)
    {
        Login login = new Login();

        var selectStatement = "SELECT * FROM login WHERE username= @userName AND sifre = @sifre";

        using (var cn = new SqlConnection("TODO"))
        {
            using (var cmd = new SqlCommand(selectStatement, cn))
            {
                cmd.Parameters.Add("@userName", SqlDbType.NVarChar).Value = userName;
                cmd.Parameters.Add("@sifre", SqlDbType.NVarChar).Value = sifre;

                cn.Open();

                var reader = cmd.ExecuteReader();

                if (!reader.HasRows) return login;
                reader.Read();
                login.Id = reader.GetInt32(0);
            }
        }

        return login;
    }
}

在你的表单中调用上面的方法

Login login = DataOperations.DoSomething("TODO", "TODO");

Karen 的代码,使用 Dapper(右键单击项目,选择管理 Nuget 包,单击浏览,输入 Dapper):

public static Login DoSomething(string userName, string sifre)
{
    using var c = new SqlConnection("conn str here");
    var id = c.ExecuteScalar<int?>(
        "SELECT id FROM login WHERE username= @u AND sifre = @s", 
        new{ u = textBox1.Text, s = textBox2.Text }
    );

    return new Login() { Id = id ?? 0 };
}