如何简化代码(数据集结果)

exdqitrt  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(497)

我有个密码:

MySqlCommand cmd = connection.CreateCommand();
                cmd.CommandText = "SELECT nom, prenom from liste_personnels where mail ='" + mailTest + "'";
                MySqlDataAdapter adap = new MySqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                adap.Fill(ds);
                nom = ds.Tables[0].Rows[0].ItemArray[0].ToString();
                prenom = ds.Tables[0].Rows[0].ItemArray[1].ToString();

我找到了如何提取变量nom和prenom,但我觉得很复杂。。有没有可能简化数据集的代码结果,让两个变量在一个表中分开?
谢谢你的帮助。

kh212irz

kh212irz1#

DataSet 这里似乎杀伤力过大;我会用一个简单的 MySqlDataReader . (另外,请使用参数来防止sql注入。)

string nom = null, prenom = null;
using (var cmd = connection.CreateCommand())
{
    // create the command and bind the parameter; this prevents SQL injection
    cmd.CommandText = "SELECT nom, prenom from liste_personnels where mail = @mail";
    cmd.Parameters.AddWithValue("@mail", mailtest);
    using (var reader = cmd.ExecuteReader())
    {
        // check if a row was found in the DB; you may need to handle if it's false
        if (reader.Read())
        {
            // read the data
            nom = reader.GetString(0);
            prenom = reader.GetString(1);
        }
    }
}

最后,如果您可以向项目中添加另一个库,我将使用dapper简化上述代码:

var result = connection.Query(
        "SELECT nom, prenom from liste_personnels where mail = @mailtest",
        new { mailtest })
    .SingleOrDefault();
var nom = (string) result?.nom;
var prenom = (string) result?.prenom;

相关问题