我有一个代码:
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的方法,但我认为这很复杂。可以简化我的代码-dataSet的结果是将两个变量等放在一个表中吗?
感谢您的帮助。
答案 0 :(得分:1)
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;