Sur mon projet actuel, pour obtenir une valeur unique (sélectionnez la colonne dans la table où id = val), le programmeur précédent utilise un datarow, une datatable et un sqldatadapter (et bien sûr sqlconnection) juste pour obtenir cette valeur.
Existe-t-il un moyen plus simple de créer une requête de sélection simple? En php, je peux simplement utiliser mysql_query
puis mysql_result
et j'ai fini.
Ce serait bien si je pouvais simplement faire:
SqlConnection conSql = new SqlConnection(ConnStr);
SomeSqlClass obj = new SomeSqlClass(sql_string, conSql);
conSql.Close();
return obj[0];
Merci pour tous les conseils.
Vous pouvez ignorer DataReader
et DataAdapter
et appeler simplement ExecuteScalar()
sur la commande sql.
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand("SELECT * FROM whatever
WHERE id = 5", conn);
try
{
conn.Open();
newID = (int)cmd.ExecuteScalar();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Vous recherchez probablement SqlCommand
et SqlDataReader
Dictionary<int, string> users = new Dictionary<int, string>();
using(SqlConnection connection = new SqlConnection("Your connection string"))
{
string query = "SELECT UserId, UserName FROM Users";
SqlCommand command = new SqlCommand(query, connection);
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
users.Add(reader.GetInt32(0), reader.GetString(1));
}
connection.Close();
}
En fait, il existe une méthode SqlCommand.ExecuteScalar () qui retournera simplement le premier champ de la première ligne des résultats renvoyés. Juste pour toi.
Bibliothèque de classes. NET Framework SqlCommand .. ::. Méthode ExecuteScalar
Exécute la requête et renvoie la première colonne de la première ligne du jeu de résultats renvoyé par la requête. Les colonnes ou lignes supplémentaires sont ignorées.
Vous pouvez faire quelque chose de très similaire:
using (SqlConnection conn = new SqlConnection(ConnStr))
using (SqlCommand cmd = new SqlCommand(sql_string, conn))
{
conn.Open();
return cmd.ExecuteScalar();
}
vous pouvez utiliser la fonction executeScalar SqlCommands. Veuillez regarder le lien suivant
http://msdn.Microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx