Enregistrer le return SQL dans une string

J'essaie d'save des informations de la database dans une string.

Comment est-ce possible avec le code suivant?

using (SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionSsortingngs["ConnectionSsortingng"].ConnectionSsortingng)) { SqlCommand cmd = new SqlCommand("SELECT something FROM table"); cmd.CommandType = CommandType.Text; cmd.Connection = connection; connection.Open(); cmd.ExecuteNonQuery(); connection.Close(); } 

Est-il possible d'utiliser ceci pour get une certaine valeur de la database sauvegardée dans une ssortingng ?

Au lieu de cmd.ExecuteNonQuery() , vous devez appeler cmd.ExecuteScalar() .

Voir MSDN pour la documentation.

 ssortingng result = (ssortingng)cmd.ExecuteScalar(); 

Comme @ThorstenDittmar l'a indiqué correctement, la conversion ne fonctionne que si la valeur de la database est en fait une ssortingng (ou quelque chose qui peut être mappée dessus, comme varchar ).

Vous pouvez l'utiliser pour être sûr:

 object result = cmd.ExecuteScalar(); ssortingng s = result != null? result.ToSsortingng() : null; 

Ou

 ssortingng s = Convert.ToSsortingng(cmd.ExecuteScalar()); 

ExecuteNonQuery est pour les INSERT , UPDATE et DELETE . D'autres commands SQL, telles que les commands DDL ou les commands d'administration db, dans lesquelles aucun jeu de résultats n'est renvoyé ou dont le résultat peut être ignoré, peuvent également être utilisées.

ExecuteScalar peut être utilisé pour les SELECT où seul le premier champ de la première ligne est nécessaire.

Lorsque plusieurs champs et / ou plusieurs lignes doivent être renvoyés, utilisez ExecuteReader .

Exemple d'utilisation de ExecuteReader :

 using (var conn = new SqlConnection(connectionSsortingng)) { using (var cmd = new SqlCommand("SELECT name, loc FROM t WHERE id=@id", conn)) { cmd.Parameters.AddWithValue("@id", id); conn.Open(); using (var reader = cmd.ExecuteReader()) { int nameOrdinal = reader.GetOrdinal("name"); int locationOrdinal = reader.GetOrdinal("loc"); while (reader.Read()) { Console.WriteLine("Name = {0}, Location = {1}", reader.GetSsortingng(nameOrdinal), reader.GetSsortingng(locationOrdinal)); } } } } 

Vous devez remplir les loggings dans un SqlDatareader ou un DataSet / DataTable en utilisant SqlDataAdapter . Actuellement, vous utilisez ExecuteNonQuery qui est généralement utilisé pour les INSERT/UPDATE .

 DataTable dt = new DataTable(); using (SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionSsortingngs["ConnectionSsortingng"].ConnectionSsortingng)) { using (SqlCommand cmd = new SqlCommand("SELECT something FROM table")) { cmd.CommandType = CommandType.Text; cmd.Connection = connection; SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); } } 

Cela returnnera vos résultats de votre requête dans DataTable .

Si vous voulez récupérer les résultats dans une List<ssortingng> (puisque vous requestz une seule colonne à partir de votre table et qu'il y a probablement plusieurs lignes), vous pouvez faire:

 List<ssortingng> returnedList = new List<ssortingng>(); using (SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionSsortingngs["ConnectionSsortingng"].ConnectionSsortingng)) { using (SqlCommand cmd = new SqlCommand("SELECT something FROM table")) { cmd.CommandType = CommandType.Text; cmd.Connection = connection; connection.Open(); using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { returnedList.Add(Convert.ToSsortingng(reader["something"])); } } } } 

Ensuite, pour get une seule string, vous pouvez faire:

 ssortingng singleSsortingng = ssortingng.Join(Environment.NewLine, returnedList);