{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2020/07/18/connexion-a-une-base-de-donnees-en-c-serveur-dimpression/","llm_html_url":"https://tutos-gameserver.fr/2020/07/18/connexion-a-une-base-de-donnees-en-c-serveur-dimpression/llm","llm_json_url":"https://tutos-gameserver.fr/2020/07/18/connexion-a-une-base-de-donnees-en-c-serveur-dimpression/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Connexion à une base de données en C #\n\n &#8211; Serveur d&rsquo;impression","site":{"name":"Tutos GameServer","url":"https://tutos-gameserver.fr/"},"author":{"id":1,"name":"Titanfall","url":"https://tutos-gameserver.fr/author/titanfall/"},"published_at":"2020-07-18T20:49:28+00:00","modified_at":"2020-07-18T20:49:28+00:00","word_count":1183,"reading_time_seconds":355,"summary":"[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »] Ce billet vous montrera comment effectuer l&#39;une des opérations de base en C #: se connecter à une base de données et exécuter des requêtes SQL. Une connaissance de base de C # et SQL est requise au préalable se connecter La première étape est donc la connexion. Cela nécessite deux [&hellip;]","summary_points":["[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »]\n\nCe billet vous montrera comment effectuer l&#39;une des opérations de base en C #: se connecter à une base de données et exécuter des requêtes SQL.","Une connaissance de base de C # et SQL est requise au préalable\nse connecter\nLa première étape est donc la connexion.","Cela nécessite deux choses: \n\nLe pilote de la base de données\nLa chaîne de connexion\n\nLes deux peuvent être trouvés sur ce site: www.connectionstrings.com.","Cependant, si par exemple vous utilisez une base de données SQL Server, les pilotes sont inclus."],"topics":["Serveur d'impression"],"entities":[],"entities_metadata":[{"id":10,"name":"Serveur d'impression","slug":"serveur-dimpression","taxonomy":"category","count":3907,"url":"https://tutos-gameserver.fr/category/serveur-dimpression/"}],"tags":["Serveur d'impression"],"content_hash":"2b84e22006c7b1451274cdff134613f7","plain_text":"[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »]\n\nCe billet vous montrera comment effectuer l&#39;une des opérations de base en C #: se connecter à une base de données et exécuter des requêtes SQL. Une connaissance de base de C # et SQL est requise au préalable\nse connecter\nLa première étape est donc la connexion. Cela nécessite deux choses: \n\nLe pilote de la base de données\nLa chaîne de connexion\n\nLes deux peuvent être trouvés sur ce site: www.connectionstrings.com. Cependant, si par exemple vous utilisez une base de données SQL Server, les pilotes sont inclus. Voici également la chaîne de connexion de base pour une telle base de données: \n&quot;Data Source = ServerAddress; Initial Catalog = DatabaseName; User Id = UserName; Password = Password;&quot;\n// Vous devez évidemment remplacer ServerAddress, DatabaseName, etc. par la valeur correspondante\nPour créer la connexion, nous utilisons la classe SqlConnection (dont l&#39;espace de noms (et peut-être le préfixe) changera en fonction de votre pilote). Pour SQL Server, l&#39;espace de noms est System.Data.SqlClient.\nSqlConnection myConnection = new SqlConnection (&quot;Source de données = 127.0.0.1,1433; Catalogue initial = MaBase; ID utilisateur = Krimog; Mot de passe = myPass;&quot;);\nUne fois la connexion créée, vous pouvez l&#39;ouvrir:\nmyConnection.Open ();\nCette dernière ligne peut évidemment générer une exception si, par exemple, la chaîne de connexion est mauvaise. Vous devrez également fermer la connexion en utilisant l&#39;instruction:\nmyConnection.Close ();\nCréer la requête\nPour cela, nous allons utiliser la classe SqlCommand, indiquer la connexion et la requête:\nSqlCommand myCommand = new SqlCommand ();\nmyOrder.Connection = myConnection;\nmyOrder.CommandText = &quot;INSÉRER DANS LES VALEURS myTable (myControl1, myControl2) (&quot;\n                       + myInt + &quot;, &amp; # 39;&quot; + monstring + &quot;&amp; # 39;);&quot;;\nVoici un moyen simple de créer et d&#39;initialiser un objet SqlCommand.\nExécuter une requête (sauf SELECT)\nLa première question à vous poser est: ma requête renverra-t-elle une valeur? C&#39;est très simple, tout dépend de la requête: une requête SELECT renvoie des données, mais pas les autres requêtes (INSERT, UPDATE, DELETE).Commençons par quelque chose de simple: SUPPRIMER. Nous utiliserons donc la méthode ExecuteNonQuery (). Cela renvoie le nombre d&#39;enregistrements affectés par la demande:\nmyOrder.CommandText = &quot;SUPPRIMER DE maTable O id < \" + monInt;\nint nbEnregistrementsAffectes = maCommande.ExecuteNonQuery();\nif (nbEnregistrementsAffectes > 0)\n\n    Console.WriteLine (nbAffectsRecords + &quot;enregistrements supprimés&quot;);\n\nautre\n\n    Console.WriteLine (&quot;Aucun enregistrement supprimé&quot;);\n\nLà encore, la méthode ExecuteNonQuery () peut générer une exception, par exemple si la requête n&#39;est pas valide ou si la connexion n&#39;est pas ouverte.\nExécuter une requête SELECT\nLà, les choses se compliquent un peu. Tout simplement parce que vous devez gérer le contenu de la demande. Il existe cependant une méthode simple pour récupérer 1 résultat (donc 1 colonne de 1 ligne): ExecuteScalar ().\nmyOrder.CommandText = &quot;SELECT CustomerName FROM Clients WHERE CustomerID =&quot; + myInt;\nchaîne CustomerName = myOrder.ExecuteScalar (). ToString ();\nConsole.WriteLine (&quot;Mon client s&#39;appelle&quot; + clientName);\nPour être précis, la méthode ExecuteScalar () retourne un objet, d&#39;où l&#39;intérêt du ToString () derrière.\nImaginez maintenant que vous disposez de nombreux champs et de nombreux enregistrements. Vous devrez alors utiliser un SqlDataReader:\nmyOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Clients&quot;;\nSqlDataReader myReader = myOrder.ExecuteReader ();\nwhile (myReader.Read ()) // Tant qu&#39;il y a des résultats, je lis le suivant\n\n    Console.WriteLine (myReader[\"PrenomClient\"].ToString () + &quot;&quot; + myReader[\"NomClient\"].ToString ());\n    // ou\n    Console.WriteLine (myReader[1].ToString () + &quot;&quot; + myReader[0].ToString ());\n    // ou\n    Console.WriteLine (myReader.GetString (1) + &quot;&quot; + myReader.GetString (0));\n\nmyReader.Close (); // Nous n&#39;oublions pas de fermer le lecteur\nIl existe une dernière solution qui consiste à insérer le résultat de la requête dans un DataSet grâce à un SqlDataAdapter. Cependant, n&#39;ayant pas beaucoup testé ce système, je ne m&#39;y attarderai pas longtemps.\nDataSet myClients = new DataSet ();\nmyOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Customers&quot;;\nSqlDataAdapter monAdapter = nouveau SqlDataAdapter ();\nmyAdapter.SelectCommand = myOrder;\nmyAdapter.Fill (myCustomers);\n// L&#39;ensemble de données myCustomers est ensuite renseigné\nRequêtes paramétrées\nVoici donc quelque chose de très simple, mais pas assez utilisé. En général, une requête n&#39;a d&#39;intérêt que si certaines valeurs sont des variables. Mais dans l&#39;exemple précédent d&#39;INSERT, on voit tout de suite que ce n&#39;est pas simple. De plus, il est possible de faire une injection SQL dans cette requête. Voici 2 problèmes qui sont résolus simplement en utilisant des requêtes paramétrées: simplicité et sécurité.La première étape consiste à définir où intégrer les variables dans la requête, et la seconde donne les valeurs aux variables.\n// On remplace les valeurs par @aNom, sans jamais mettre &amp; # 39; autour\nmyCommand.CommandText = &quot;INSÉRER DANS maTable (myControl1, myControl2) VALUES (@ myValue1, @ myValue2);&quot;;\n// Puis on définit les valeurs\nmyCommand.Parameters.Add (nouveau SqlParameter (&quot;@ myValue1&quot;, myInt));\nmyOrder.Parameters.Add (nouveau SqlParameter (&quot;@ myValue2&quot;, monstring));\nDonc, nous n&#39;avons même pas à nous soucier de mettre des guillemets autour des chaînes ou non, en utilisant un point ou une virgule pour les doubles &#8230; Tout est directement géré à partir du type d&#39;objets (dans ce cas myInt et monstring).\nProcédures stockées\nVoici un moyen d&#39;améliorer les performances et la maintenabilité de votre application: utilisez des procédures stockées. Le principe est que votre demande est directement enregistrée et compilée dans la base de données. Donc pas besoin de recompiler l&#39;application pour modifier une requête. Il vous suffit de modifier la procédure stockée directement dans votre base de données.\nmyOrder.CommandText = &quot;NameOfMyProcedure&quot;;\nmyOrder.CommandType = CommandType.StoredProcedure;\nmyCommand.Parameters.Add (new SqlParameter (&quot;@ MyParameter&quot;, myValue));\nQuant à l&#39;exécution elle-même, nous utilisons ExecuteNonQuery (), ExecuteScalar () ou ExecuteReader () dans les mêmes conditions qu&#39;une requête manuelle.\nrésumé\nInterroger une base de données est très simple, mais il est essentiel de s&#39;habituer à l&#39;utilisation de requêtes paramétrées, et si possible de procédures stockées.Voici également un code pour résumer l&#39;ensemble:\npublic void getListeClientsDansUneVille (string ville)\n\n    SqlConnection myConnection = null;\n    essayer\n    \n        myConnection = new SqlConnection (&quot;Source de données = 127.0.0.1,1433; Catalogue initial = MaBase; ID utilisateur = Krimog; Mot de passe = myPass;&quot;);\n        SqlCommand myCommand = new SqlCommand ();\n        myOrder.Connection = maConnexion;\n        myOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Clients WHERE CustomerCity = @City;&quot;;\n        myOrder.Parameters.Add (nouveau SqlParameter (&quot;@ City&quot;, city));\n        myConnection.Open ();\n        SqlDataReader myReader = myOrder.ExecuteReader ();\n        if (! myReader.HasRows)\n        \n            Console.WriteLine (&quot;Aucun client ne vit dans&quot; + ville);\n        \n        autre\n        \n            while (myReader.Read ())\n            \n                Console.WriteLine (myReader[\"PrenomClient\"].ToString () + &quot;&quot; + myReader[\"NomClient\"].ToString () + &quot;habite&quot; + ville);\n            \n        \n    \n    capture\n    \n        Console.WriteLine (&quot;Erreur de connexion ou d&#39;exécution de la demande&quot;);\n    \n    enfin\n    \n        if (myConnection! = null &amp;&amp; myConnection.State == ConnectionState.Open)\n        \n            myConnection.Close ();\n        \n    \n\n\nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »]","Ce billet vous montrera comment effectuer l&#39;une des opérations de base en C #: se connecter à une base de données et exécuter des requêtes SQL. Une connaissance de base de C # et SQL est requise au préalable\nse connecter\nLa première étape est donc la connexion. Cela nécessite deux choses:","Le pilote de la base de données\nLa chaîne de connexion","Les deux peuvent être trouvés sur ce site: www.connectionstrings.com. Cependant, si par exemple vous utilisez une base de données SQL Server, les pilotes sont inclus. Voici également la chaîne de connexion de base pour une telle base de données: \n&quot;Data Source = ServerAddress; Initial Catalog = DatabaseName; User Id = UserName; Password = Password;&quot;\n// Vous devez évidemment remplacer ServerAddress, DatabaseName, etc. par la valeur correspondante\nPour créer la connexion, nous utilisons la classe SqlConnection (dont l&#39;espace de noms (et peut-être le préfixe) changera en fonction de votre pilote). Pour SQL Server, l&#39;espace de noms est System.Data.SqlClient.\nSqlConnection myConnection = new SqlConnection (&quot;Source de données = 127.0.0.1,1433; Catalogue initial = MaBase; ID utilisateur = Krimog; Mot de passe = myPass;&quot;);\nUne fois la connexion créée, vous pouvez l&#39;ouvrir:\nmyConnection.Open ();\nCette dernière ligne peut évidemment générer une exception si, par exemple, la chaîne de connexion est mauvaise. Vous devrez également fermer la connexion en utilisant l&#39;instruction:\nmyConnection.Close ();\nCréer la requête\nPour cela, nous allons utiliser la classe SqlCommand, indiquer la connexion et la requête:\nSqlCommand myCommand = new SqlCommand ();\nmyOrder.Connection = myConnection;\nmyOrder.CommandText = &quot;INSÉRER DANS LES VALEURS myTable (myControl1, myControl2) (&quot;\n                       + myInt + &quot;, &amp; # 39;&quot; + monstring + &quot;&amp; # 39;);&quot;;\nVoici un moyen simple de créer et d&#39;initialiser un objet SqlCommand.\nExécuter une requête (sauf SELECT)\nLa première question à vous poser est: ma requête renverra-t-elle une valeur? C&#39;est très simple, tout dépend de la requête: une requête SELECT renvoie des données, mais pas les autres requêtes (INSERT, UPDATE, DELETE).Commençons par quelque chose de simple: SUPPRIMER. Nous utiliserons donc la méthode ExecuteNonQuery (). Cela renvoie le nombre d&#39;enregistrements affectés par la demande:\nmyOrder.CommandText = &quot;SUPPRIMER DE maTable O id < \" + monInt;\nint nbEnregistrementsAffectes = maCommande.ExecuteNonQuery();\nif (nbEnregistrementsAffectes > 0)","Console.WriteLine (nbAffectsRecords + &quot;enregistrements supprimés&quot;);","autre","Console.WriteLine (&quot;Aucun enregistrement supprimé&quot;);","Là encore, la méthode ExecuteNonQuery () peut générer une exception, par exemple si la requête n&#39;est pas valide ou si la connexion n&#39;est pas ouverte.\nExécuter une requête SELECT\nLà, les choses se compliquent un peu. Tout simplement parce que vous devez gérer le contenu de la demande. Il existe cependant une méthode simple pour récupérer 1 résultat (donc 1 colonne de 1 ligne): ExecuteScalar ().\nmyOrder.CommandText = &quot;SELECT CustomerName FROM Clients WHERE CustomerID =&quot; + myInt;\nchaîne CustomerName = myOrder.ExecuteScalar (). ToString ();\nConsole.WriteLine (&quot;Mon client s&#39;appelle&quot; + clientName);\nPour être précis, la méthode ExecuteScalar () retourne un objet, d&#39;où l&#39;intérêt du ToString () derrière.\nImaginez maintenant que vous disposez de nombreux champs et de nombreux enregistrements. Vous devrez alors utiliser un SqlDataReader:\nmyOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Clients&quot;;\nSqlDataReader myReader = myOrder.ExecuteReader ();\nwhile (myReader.Read ()) // Tant qu&#39;il y a des résultats, je lis le suivant","Console.WriteLine (myReader[\"PrenomClient\"].ToString () + &quot;&quot; + myReader[\"NomClient\"].ToString ());\n    // ou\n    Console.WriteLine (myReader[1].ToString () + &quot;&quot; + myReader[0].ToString ());\n    // ou\n    Console.WriteLine (myReader.GetString (1) + &quot;&quot; + myReader.GetString (0));","myReader.Close (); // Nous n&#39;oublions pas de fermer le lecteur\nIl existe une dernière solution qui consiste à insérer le résultat de la requête dans un DataSet grâce à un SqlDataAdapter. Cependant, n&#39;ayant pas beaucoup testé ce système, je ne m&#39;y attarderai pas longtemps.\nDataSet myClients = new DataSet ();\nmyOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Customers&quot;;\nSqlDataAdapter monAdapter = nouveau SqlDataAdapter ();\nmyAdapter.SelectCommand = myOrder;\nmyAdapter.Fill (myCustomers);\n// L&#39;ensemble de données myCustomers est ensuite renseigné\nRequêtes paramétrées\nVoici donc quelque chose de très simple, mais pas assez utilisé. En général, une requête n&#39;a d&#39;intérêt que si certaines valeurs sont des variables. Mais dans l&#39;exemple précédent d&#39;INSERT, on voit tout de suite que ce n&#39;est pas simple. De plus, il est possible de faire une injection SQL dans cette requête. Voici 2 problèmes qui sont résolus simplement en utilisant des requêtes paramétrées: simplicité et sécurité.La première étape consiste à définir où intégrer les variables dans la requête, et la seconde donne les valeurs aux variables.\n// On remplace les valeurs par @aNom, sans jamais mettre &amp; # 39; autour\nmyCommand.CommandText = &quot;INSÉRER DANS maTable (myControl1, myControl2) VALUES (@ myValue1, @ myValue2);&quot;;\n// Puis on définit les valeurs\nmyCommand.Parameters.Add (nouveau SqlParameter (&quot;@ myValue1&quot;, myInt));\nmyOrder.Parameters.Add (nouveau SqlParameter (&quot;@ myValue2&quot;, monstring));\nDonc, nous n&#39;avons même pas à nous soucier de mettre des guillemets autour des chaînes ou non, en utilisant un point ou une virgule pour les doubles &#8230; Tout est directement géré à partir du type d&#39;objets (dans ce cas myInt et monstring).\nProcédures stockées\nVoici un moyen d&#39;améliorer les performances et la maintenabilité de votre application: utilisez des procédures stockées. Le principe est que votre demande est directement enregistrée et compilée dans la base de données. Donc pas besoin de recompiler l&#39;application pour modifier une requête. Il vous suffit de modifier la procédure stockée directement dans votre base de données.\nmyOrder.CommandText = &quot;NameOfMyProcedure&quot;;\nmyOrder.CommandType = CommandType.StoredProcedure;\nmyCommand.Parameters.Add (new SqlParameter (&quot;@ MyParameter&quot;, myValue));\nQuant à l&#39;exécution elle-même, nous utilisons ExecuteNonQuery (), ExecuteScalar () ou ExecuteReader () dans les mêmes conditions qu&#39;une requête manuelle.\nrésumé\nInterroger une base de données est très simple, mais il est essentiel de s&#39;habituer à l&#39;utilisation de requêtes paramétrées, et si possible de procédures stockées.Voici également un code pour résumer l&#39;ensemble:\npublic void getListeClientsDansUneVille (string ville)","SqlConnection myConnection = null;\n    essayer\n    \n        myConnection = new SqlConnection (&quot;Source de données = 127.0.0.1,1433; Catalogue initial = MaBase; ID utilisateur = Krimog; Mot de passe = myPass;&quot;);\n        SqlCommand myCommand = new SqlCommand ();\n        myOrder.Connection = maConnexion;\n        myOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Clients WHERE CustomerCity = @City;&quot;;\n        myOrder.Parameters.Add (nouveau SqlParameter (&quot;@ City&quot;, city));\n        myConnection.Open ();\n        SqlDataReader myReader = myOrder.ExecuteReader ();\n        if (! myReader.HasRows)\n        \n            Console.WriteLine (&quot;Aucun client ne vit dans&quot; + ville);\n        \n        autre\n        \n            while (myReader.Read ())\n            \n                Console.WriteLine (myReader[\"PrenomClient\"].ToString () + &quot;&quot; + myReader[\"NomClient\"].ToString () + &quot;habite&quot; + ville);\n            \n        \n    \n    capture\n    \n        Console.WriteLine (&quot;Erreur de connexion ou d&#39;exécution de la demande&quot;);\n    \n    enfin\n    \n        if (myConnection! = null &amp;&amp; myConnection.State == ConnectionState.Open)\n        \n            myConnection.Close ();","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »]","html":"<p>[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »]</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"Ce billet vous montrera comment effectuer l&#39;une des opérations de base en C #: se connecter à une base de données et exécuter des requêtes SQL. Une connaissance de base de C # et SQL est requise au préalable\nse connecter\nLa première étape est donc la connexion. Cela nécessite deux choses:","html":"<p>Ce billet vous montrera comment effectuer l&#039;une des opérations de base en C #: se connecter à une base de données et exécuter des requêtes SQL. Une connaissance de base de C # et SQL est requise au préalable\nse connecter\nLa première étape est donc la connexion. Cela nécessite deux choses:</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"Le pilote de la base de données\nLa chaîne de connexion","html":"<p>Le pilote de la base de données\nLa chaîne de connexion</p>"},{"id":"text-4","type":"text","heading":"","plain_text":"Les deux peuvent être trouvés sur ce site: www.connectionstrings.com. Cependant, si par exemple vous utilisez une base de données SQL Server, les pilotes sont inclus. Voici également la chaîne de connexion de base pour une telle base de données: \n&quot;Data Source = ServerAddress; Initial Catalog = DatabaseName; User Id = UserName; Password = Password;&quot;\n// Vous devez évidemment remplacer ServerAddress, DatabaseName, etc. par la valeur correspondante\nPour créer la connexion, nous utilisons la classe SqlConnection (dont l&#39;espace de noms (et peut-être le préfixe) changera en fonction de votre pilote). Pour SQL Server, l&#39;espace de noms est System.Data.SqlClient.\nSqlConnection myConnection = new SqlConnection (&quot;Source de données = 127.0.0.1,1433; Catalogue initial = MaBase; ID utilisateur = Krimog; Mot de passe = myPass;&quot;);\nUne fois la connexion créée, vous pouvez l&#39;ouvrir:\nmyConnection.Open ();\nCette dernière ligne peut évidemment générer une exception si, par exemple, la chaîne de connexion est mauvaise. Vous devrez également fermer la connexion en utilisant l&#39;instruction:\nmyConnection.Close ();\nCréer la requête\nPour cela, nous allons utiliser la classe SqlCommand, indiquer la connexion et la requête:\nSqlCommand myCommand = new SqlCommand ();\nmyOrder.Connection = myConnection;\nmyOrder.CommandText = &quot;INSÉRER DANS LES VALEURS myTable (myControl1, myControl2) (&quot;\n                       + myInt + &quot;, &amp; # 39;&quot; + monstring + &quot;&amp; # 39;);&quot;;\nVoici un moyen simple de créer et d&#39;initialiser un objet SqlCommand.\nExécuter une requête (sauf SELECT)\nLa première question à vous poser est: ma requête renverra-t-elle une valeur? C&#39;est très simple, tout dépend de la requête: une requête SELECT renvoie des données, mais pas les autres requêtes (INSERT, UPDATE, DELETE).Commençons par quelque chose de simple: SUPPRIMER. Nous utiliserons donc la méthode ExecuteNonQuery (). Cela renvoie le nombre d&#39;enregistrements affectés par la demande:\nmyOrder.CommandText = &quot;SUPPRIMER DE maTable O id < \" + monInt;\nint nbEnregistrementsAffectes = maCommande.ExecuteNonQuery();\nif (nbEnregistrementsAffectes > 0)","html":"<p>Les deux peuvent être trouvés sur ce site: www.connectionstrings.com. Cependant, si par exemple vous utilisez une base de données SQL Server, les pilotes sont inclus. Voici également la chaîne de connexion de base pour une telle base de données: \n&quot;Data Source = ServerAddress; Initial Catalog = DatabaseName; User Id = UserName; Password = Password;&quot;\n// Vous devez évidemment remplacer ServerAddress, DatabaseName, etc. par la valeur correspondante\nPour créer la connexion, nous utilisons la classe SqlConnection (dont l&#039;espace de noms (et peut-être le préfixe) changera en fonction de votre pilote). Pour SQL Server, l&#039;espace de noms est System.Data.SqlClient.\nSqlConnection myConnection = new SqlConnection (&quot;Source de données = 127.0.0.1,1433; Catalogue initial = MaBase; ID utilisateur = Krimog; Mot de passe = myPass;&quot;);\nUne fois la connexion créée, vous pouvez l&#039;ouvrir:\nmyConnection.Open ();\nCette dernière ligne peut évidemment générer une exception si, par exemple, la chaîne de connexion est mauvaise. Vous devrez également fermer la connexion en utilisant l&#039;instruction:\nmyConnection.Close ();\nCréer la requête\nPour cela, nous allons utiliser la classe SqlCommand, indiquer la connexion et la requête:\nSqlCommand myCommand = new SqlCommand ();\nmyOrder.Connection = myConnection;\nmyOrder.CommandText = &quot;INSÉRER DANS LES VALEURS myTable (myControl1, myControl2) (&quot;\n                       + myInt + &quot;, &amp; # 39;&quot; + monstring + &quot;&amp; # 39;);&quot;;\nVoici un moyen simple de créer et d&#039;initialiser un objet SqlCommand.\nExécuter une requête (sauf SELECT)\nLa première question à vous poser est: ma requête renverra-t-elle une valeur? C&#039;est très simple, tout dépend de la requête: une requête SELECT renvoie des données, mais pas les autres requêtes (INSERT, UPDATE, DELETE).Commençons par quelque chose de simple: SUPPRIMER. Nous utiliserons donc la méthode ExecuteNonQuery (). Cela renvoie le nombre d&#039;enregistrements affectés par la demande:\nmyOrder.CommandText = &quot;SUPPRIMER DE maTable O id &lt; &quot; + monInt;\nint nbEnregistrementsAffectes = maCommande.ExecuteNonQuery();\nif (nbEnregistrementsAffectes &gt; 0)</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"Console.WriteLine (nbAffectsRecords + &quot;enregistrements supprimés&quot;);","html":"<p>Console.WriteLine (nbAffectsRecords + &quot;enregistrements supprimés&quot;);</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"autre","html":"<p>autre</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"Console.WriteLine (&quot;Aucun enregistrement supprimé&quot;);","html":"<p>Console.WriteLine (&quot;Aucun enregistrement supprimé&quot;);</p>"},{"id":"text-8","type":"text","heading":"","plain_text":"Là encore, la méthode ExecuteNonQuery () peut générer une exception, par exemple si la requête n&#39;est pas valide ou si la connexion n&#39;est pas ouverte.\nExécuter une requête SELECT\nLà, les choses se compliquent un peu. Tout simplement parce que vous devez gérer le contenu de la demande. Il existe cependant une méthode simple pour récupérer 1 résultat (donc 1 colonne de 1 ligne): ExecuteScalar ().\nmyOrder.CommandText = &quot;SELECT CustomerName FROM Clients WHERE CustomerID =&quot; + myInt;\nchaîne CustomerName = myOrder.ExecuteScalar (). ToString ();\nConsole.WriteLine (&quot;Mon client s&#39;appelle&quot; + clientName);\nPour être précis, la méthode ExecuteScalar () retourne un objet, d&#39;où l&#39;intérêt du ToString () derrière.\nImaginez maintenant que vous disposez de nombreux champs et de nombreux enregistrements. Vous devrez alors utiliser un SqlDataReader:\nmyOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Clients&quot;;\nSqlDataReader myReader = myOrder.ExecuteReader ();\nwhile (myReader.Read ()) // Tant qu&#39;il y a des résultats, je lis le suivant","html":"<p>Là encore, la méthode ExecuteNonQuery () peut générer une exception, par exemple si la requête n&#039;est pas valide ou si la connexion n&#039;est pas ouverte.\nExécuter une requête SELECT\nLà, les choses se compliquent un peu. Tout simplement parce que vous devez gérer le contenu de la demande. Il existe cependant une méthode simple pour récupérer 1 résultat (donc 1 colonne de 1 ligne): ExecuteScalar ().\nmyOrder.CommandText = &quot;SELECT CustomerName FROM Clients WHERE CustomerID =&quot; + myInt;\nchaîne CustomerName = myOrder.ExecuteScalar (). ToString ();\nConsole.WriteLine (&quot;Mon client s&#039;appelle&quot; + clientName);\nPour être précis, la méthode ExecuteScalar () retourne un objet, d&#039;où l&#039;intérêt du ToString () derrière.\nImaginez maintenant que vous disposez de nombreux champs et de nombreux enregistrements. Vous devrez alors utiliser un SqlDataReader:\nmyOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Clients&quot;;\nSqlDataReader myReader = myOrder.ExecuteReader ();\nwhile (myReader.Read ()) // Tant qu&#039;il y a des résultats, je lis le suivant</p>"},{"id":"text-9","type":"text","heading":"","plain_text":"Console.WriteLine (myReader[\"PrenomClient\"].ToString () + &quot;&quot; + myReader[\"NomClient\"].ToString ());\n    // ou\n    Console.WriteLine (myReader[1].ToString () + &quot;&quot; + myReader[0].ToString ());\n    // ou\n    Console.WriteLine (myReader.GetString (1) + &quot;&quot; + myReader.GetString (0));","html":"<p>Console.WriteLine (myReader[&quot;PrenomClient&quot;].ToString () + &quot;&quot; + myReader[&quot;NomClient&quot;].ToString ());\n    // ou\n    Console.WriteLine (myReader[1].ToString () + &quot;&quot; + myReader[0].ToString ());\n    // ou\n    Console.WriteLine (myReader.GetString (1) + &quot;&quot; + myReader.GetString (0));</p>"},{"id":"text-10","type":"text","heading":"","plain_text":"myReader.Close (); // Nous n&#39;oublions pas de fermer le lecteur\nIl existe une dernière solution qui consiste à insérer le résultat de la requête dans un DataSet grâce à un SqlDataAdapter. Cependant, n&#39;ayant pas beaucoup testé ce système, je ne m&#39;y attarderai pas longtemps.\nDataSet myClients = new DataSet ();\nmyOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Customers&quot;;\nSqlDataAdapter monAdapter = nouveau SqlDataAdapter ();\nmyAdapter.SelectCommand = myOrder;\nmyAdapter.Fill (myCustomers);\n// L&#39;ensemble de données myCustomers est ensuite renseigné\nRequêtes paramétrées\nVoici donc quelque chose de très simple, mais pas assez utilisé. En général, une requête n&#39;a d&#39;intérêt que si certaines valeurs sont des variables. Mais dans l&#39;exemple précédent d&#39;INSERT, on voit tout de suite que ce n&#39;est pas simple. De plus, il est possible de faire une injection SQL dans cette requête. Voici 2 problèmes qui sont résolus simplement en utilisant des requêtes paramétrées: simplicité et sécurité.La première étape consiste à définir où intégrer les variables dans la requête, et la seconde donne les valeurs aux variables.\n// On remplace les valeurs par @aNom, sans jamais mettre &amp; # 39; autour\nmyCommand.CommandText = &quot;INSÉRER DANS maTable (myControl1, myControl2) VALUES (@ myValue1, @ myValue2);&quot;;\n// Puis on définit les valeurs\nmyCommand.Parameters.Add (nouveau SqlParameter (&quot;@ myValue1&quot;, myInt));\nmyOrder.Parameters.Add (nouveau SqlParameter (&quot;@ myValue2&quot;, monstring));\nDonc, nous n&#39;avons même pas à nous soucier de mettre des guillemets autour des chaînes ou non, en utilisant un point ou une virgule pour les doubles &#8230; Tout est directement géré à partir du type d&#39;objets (dans ce cas myInt et monstring).\nProcédures stockées\nVoici un moyen d&#39;améliorer les performances et la maintenabilité de votre application: utilisez des procédures stockées. Le principe est que votre demande est directement enregistrée et compilée dans la base de données. Donc pas besoin de recompiler l&#39;application pour modifier une requête. Il vous suffit de modifier la procédure stockée directement dans votre base de données.\nmyOrder.CommandText = &quot;NameOfMyProcedure&quot;;\nmyOrder.CommandType = CommandType.StoredProcedure;\nmyCommand.Parameters.Add (new SqlParameter (&quot;@ MyParameter&quot;, myValue));\nQuant à l&#39;exécution elle-même, nous utilisons ExecuteNonQuery (), ExecuteScalar () ou ExecuteReader () dans les mêmes conditions qu&#39;une requête manuelle.\nrésumé\nInterroger une base de données est très simple, mais il est essentiel de s&#39;habituer à l&#39;utilisation de requêtes paramétrées, et si possible de procédures stockées.Voici également un code pour résumer l&#39;ensemble:\npublic void getListeClientsDansUneVille (string ville)","html":"<p>myReader.Close (); // Nous n&#039;oublions pas de fermer le lecteur\nIl existe une dernière solution qui consiste à insérer le résultat de la requête dans un DataSet grâce à un SqlDataAdapter. Cependant, n&#039;ayant pas beaucoup testé ce système, je ne m&#039;y attarderai pas longtemps.\nDataSet myClients = new DataSet ();\nmyOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Customers&quot;;\nSqlDataAdapter monAdapter = nouveau SqlDataAdapter ();\nmyAdapter.SelectCommand = myOrder;\nmyAdapter.Fill (myCustomers);\n// L&#039;ensemble de données myCustomers est ensuite renseigné\nRequêtes paramétrées\nVoici donc quelque chose de très simple, mais pas assez utilisé. En général, une requête n&#039;a d&#039;intérêt que si certaines valeurs sont des variables. Mais dans l&#039;exemple précédent d&#039;INSERT, on voit tout de suite que ce n&#039;est pas simple. De plus, il est possible de faire une injection SQL dans cette requête. Voici 2 problèmes qui sont résolus simplement en utilisant des requêtes paramétrées: simplicité et sécurité.La première étape consiste à définir où intégrer les variables dans la requête, et la seconde donne les valeurs aux variables.\n// On remplace les valeurs par @aNom, sans jamais mettre &amp; # 39; autour\nmyCommand.CommandText = &quot;INSÉRER DANS maTable (myControl1, myControl2) VALUES (@ myValue1, @ myValue2);&quot;;\n// Puis on définit les valeurs\nmyCommand.Parameters.Add (nouveau SqlParameter (&quot;@ myValue1&quot;, myInt));\nmyOrder.Parameters.Add (nouveau SqlParameter (&quot;@ myValue2&quot;, monstring));\nDonc, nous n&#039;avons même pas à nous soucier de mettre des guillemets autour des chaînes ou non, en utilisant un point ou une virgule pour les doubles &#8230; Tout est directement géré à partir du type d&#039;objets (dans ce cas myInt et monstring).\nProcédures stockées\nVoici un moyen d&#039;améliorer les performances et la maintenabilité de votre application: utilisez des procédures stockées. Le principe est que votre demande est directement enregistrée et compilée dans la base de données. Donc pas besoin de recompiler l&#039;application pour modifier une requête. Il vous suffit de modifier la procédure stockée directement dans votre base de données.\nmyOrder.CommandText = &quot;NameOfMyProcedure&quot;;\nmyOrder.CommandType = CommandType.StoredProcedure;\nmyCommand.Parameters.Add (new SqlParameter (&quot;@ MyParameter&quot;, myValue));\nQuant à l&#039;exécution elle-même, nous utilisons ExecuteNonQuery (), ExecuteScalar () ou ExecuteReader () dans les mêmes conditions qu&#039;une requête manuelle.\nrésumé\nInterroger une base de données est très simple, mais il est essentiel de s&#039;habituer à l&#039;utilisation de requêtes paramétrées, et si possible de procédures stockées.Voici également un code pour résumer l&#039;ensemble:\npublic void getListeClientsDansUneVille (string ville)</p>"},{"id":"text-11","type":"text","heading":"","plain_text":"SqlConnection myConnection = null;\n    essayer\n    \n        myConnection = new SqlConnection (&quot;Source de données = 127.0.0.1,1433; Catalogue initial = MaBase; ID utilisateur = Krimog; Mot de passe = myPass;&quot;);\n        SqlCommand myCommand = new SqlCommand ();\n        myOrder.Connection = maConnexion;\n        myOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Clients WHERE CustomerCity = @City;&quot;;\n        myOrder.Parameters.Add (nouveau SqlParameter (&quot;@ City&quot;, city));\n        myConnection.Open ();\n        SqlDataReader myReader = myOrder.ExecuteReader ();\n        if (! myReader.HasRows)\n        \n            Console.WriteLine (&quot;Aucun client ne vit dans&quot; + ville);\n        \n        autre\n        \n            while (myReader.Read ())\n            \n                Console.WriteLine (myReader[\"PrenomClient\"].ToString () + &quot;&quot; + myReader[\"NomClient\"].ToString () + &quot;habite&quot; + ville);\n            \n        \n    \n    capture\n    \n        Console.WriteLine (&quot;Erreur de connexion ou d&#39;exécution de la demande&quot;);\n    \n    enfin\n    \n        if (myConnection! = null &amp;&amp; myConnection.State == ConnectionState.Open)\n        \n            myConnection.Close ();","html":"<p>SqlConnection myConnection = null;\n    essayer\n    \n        myConnection = new SqlConnection (&quot;Source de données = 127.0.0.1,1433; Catalogue initial = MaBase; ID utilisateur = Krimog; Mot de passe = myPass;&quot;);\n        SqlCommand myCommand = new SqlCommand ();\n        myOrder.Connection = maConnexion;\n        myOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Clients WHERE CustomerCity = @City;&quot;;\n        myOrder.Parameters.Add (nouveau SqlParameter (&quot;@ City&quot;, city));\n        myConnection.Open ();\n        SqlDataReader myReader = myOrder.ExecuteReader ();\n        if (! myReader.HasRows)\n        \n            Console.WriteLine (&quot;Aucun client ne vit dans&quot; + ville);\n        \n        autre\n        \n            while (myReader.Read ())\n            \n                Console.WriteLine (myReader[&quot;PrenomClient&quot;].ToString () + &quot;&quot; + myReader[&quot;NomClient&quot;].ToString () + &quot;habite&quot; + ville);\n            \n        \n    \n    capture\n    \n        Console.WriteLine (&quot;Erreur de connexion ou d&#039;exécution de la demande&quot;);\n    \n    enfin\n    \n        if (myConnection! = null &amp;&amp; myConnection.State == ConnectionState.Open)\n        \n            myConnection.Close ();</p>"},{"id":"text-12","type":"text","heading":"","plain_text":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]","html":"<p>Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"[bzkshopping keyword= »Minecraft » count= »8&Prime; template= »grid »]"},{"id":"text-2","heading":"Text","content":"Ce billet vous montrera comment effectuer l&#39;une des opérations de base en C #: se connecter à une base de données et exécuter des requêtes SQL. Une connaissance de base de C # et SQL est requise au préalable\nse connecter\nLa première étape est donc la connexion. Cela nécessite deux choses:"},{"id":"text-3","heading":"Text","content":"Le pilote de la base de données\nLa chaîne de connexion"},{"id":"text-4","heading":"Text","content":"Les deux peuvent être trouvés sur ce site: www.connectionstrings.com. Cependant, si par exemple vous utilisez une base de données SQL Server, les pilotes sont inclus. Voici également la chaîne de connexion de base pour une telle base de données: \n&quot;Data Source = ServerAddress; Initial Catalog = DatabaseName; User Id = UserName; Password = Password;&quot;\n// Vous devez évidemment remplacer ServerAddress, DatabaseName, etc. par la valeur correspondante\nPour créer la connexion, nous utilisons la classe SqlConnection (dont l&#39;espace de noms (et peut-être le préfixe) changera en fonction de votre pilote). Pour SQL Server, l&#39;espace de noms est System.Data.SqlClient.\nSqlConnection myConnection = new SqlConnection (&quot;Source de données = 127.0.0.1,1433; Catalogue initial = MaBase; ID utilisateur = Krimog; Mot de passe = myPass;&quot;);\nUne fois la connexion créée, vous pouvez l&#39;ouvrir:\nmyConnection.Open ();\nCette dernière ligne peut évidemment générer une exception si, par exemple, la chaîne de connexion est mauvaise. Vous devrez également fermer la connexion en utilisant l&#39;instruction:\nmyConnection.Close ();\nCréer la requête\nPour cela, nous allons utiliser la classe SqlCommand, indiquer la connexion et la requête:\nSqlCommand myCommand = new SqlCommand ();\nmyOrder.Connection = myConnection;\nmyOrder.CommandText = &quot;INSÉRER DANS LES VALEURS myTable (myControl1, myControl2) (&quot;\n                       + myInt + &quot;, &amp; # 39;&quot; + monstring + &quot;&amp; # 39;);&quot;;\nVoici un moyen simple de créer et d&#39;initialiser un objet SqlCommand.\nExécuter une requête (sauf SELECT)\nLa première question à vous poser est: ma requête renverra-t-elle une valeur? C&#39;est très simple, tout dépend de la requête: une requête SELECT renvoie des données, mais pas les autres requêtes (INSERT, UPDATE, DELETE).Commençons par quelque chose de simple: SUPPRIMER. Nous utiliserons donc la méthode ExecuteNonQuery (). Cela renvoie le nombre d&#39;enregistrements affectés par la demande:\nmyOrder.CommandText = &quot;SUPPRIMER DE maTable O id < \" + monInt;\nint nbEnregistrementsAffectes = maCommande.ExecuteNonQuery();\nif (nbEnregistrementsAffectes > 0)"},{"id":"text-5","heading":"Text","content":"Console.WriteLine (nbAffectsRecords + &quot;enregistrements supprimés&quot;);"},{"id":"text-6","heading":"Text","content":"autre"},{"id":"text-7","heading":"Text","content":"Console.WriteLine (&quot;Aucun enregistrement supprimé&quot;);"},{"id":"text-8","heading":"Text","content":"Là encore, la méthode ExecuteNonQuery () peut générer une exception, par exemple si la requête n&#39;est pas valide ou si la connexion n&#39;est pas ouverte.\nExécuter une requête SELECT\nLà, les choses se compliquent un peu. Tout simplement parce que vous devez gérer le contenu de la demande. Il existe cependant une méthode simple pour récupérer 1 résultat (donc 1 colonne de 1 ligne): ExecuteScalar ().\nmyOrder.CommandText = &quot;SELECT CustomerName FROM Clients WHERE CustomerID =&quot; + myInt;\nchaîne CustomerName = myOrder.ExecuteScalar (). ToString ();\nConsole.WriteLine (&quot;Mon client s&#39;appelle&quot; + clientName);\nPour être précis, la méthode ExecuteScalar () retourne un objet, d&#39;où l&#39;intérêt du ToString () derrière.\nImaginez maintenant que vous disposez de nombreux champs et de nombreux enregistrements. Vous devrez alors utiliser un SqlDataReader:\nmyOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Clients&quot;;\nSqlDataReader myReader = myOrder.ExecuteReader ();\nwhile (myReader.Read ()) // Tant qu&#39;il y a des résultats, je lis le suivant"},{"id":"text-9","heading":"Text","content":"Console.WriteLine (myReader[\"PrenomClient\"].ToString () + &quot;&quot; + myReader[\"NomClient\"].ToString ());\n    // ou\n    Console.WriteLine (myReader[1].ToString () + &quot;&quot; + myReader[0].ToString ());\n    // ou\n    Console.WriteLine (myReader.GetString (1) + &quot;&quot; + myReader.GetString (0));"},{"id":"text-10","heading":"Text","content":"myReader.Close (); // Nous n&#39;oublions pas de fermer le lecteur\nIl existe une dernière solution qui consiste à insérer le résultat de la requête dans un DataSet grâce à un SqlDataAdapter. Cependant, n&#39;ayant pas beaucoup testé ce système, je ne m&#39;y attarderai pas longtemps.\nDataSet myClients = new DataSet ();\nmyOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Customers&quot;;\nSqlDataAdapter monAdapter = nouveau SqlDataAdapter ();\nmyAdapter.SelectCommand = myOrder;\nmyAdapter.Fill (myCustomers);\n// L&#39;ensemble de données myCustomers est ensuite renseigné\nRequêtes paramétrées\nVoici donc quelque chose de très simple, mais pas assez utilisé. En général, une requête n&#39;a d&#39;intérêt que si certaines valeurs sont des variables. Mais dans l&#39;exemple précédent d&#39;INSERT, on voit tout de suite que ce n&#39;est pas simple. De plus, il est possible de faire une injection SQL dans cette requête. Voici 2 problèmes qui sont résolus simplement en utilisant des requêtes paramétrées: simplicité et sécurité.La première étape consiste à définir où intégrer les variables dans la requête, et la seconde donne les valeurs aux variables.\n// On remplace les valeurs par @aNom, sans jamais mettre &amp; # 39; autour\nmyCommand.CommandText = &quot;INSÉRER DANS maTable (myControl1, myControl2) VALUES (@ myValue1, @ myValue2);&quot;;\n// Puis on définit les valeurs\nmyCommand.Parameters.Add (nouveau SqlParameter (&quot;@ myValue1&quot;, myInt));\nmyOrder.Parameters.Add (nouveau SqlParameter (&quot;@ myValue2&quot;, monstring));\nDonc, nous n&#39;avons même pas à nous soucier de mettre des guillemets autour des chaînes ou non, en utilisant un point ou une virgule pour les doubles &#8230; Tout est directement géré à partir du type d&#39;objets (dans ce cas myInt et monstring).\nProcédures stockées\nVoici un moyen d&#39;améliorer les performances et la maintenabilité de votre application: utilisez des procédures stockées. Le principe est que votre demande est directement enregistrée et compilée dans la base de données. Donc pas besoin de recompiler l&#39;application pour modifier une requête. Il vous suffit de modifier la procédure stockée directement dans votre base de données.\nmyOrder.CommandText = &quot;NameOfMyProcedure&quot;;\nmyOrder.CommandType = CommandType.StoredProcedure;\nmyCommand.Parameters.Add (new SqlParameter (&quot;@ MyParameter&quot;, myValue));\nQuant à l&#39;exécution elle-même, nous utilisons ExecuteNonQuery (), ExecuteScalar () ou ExecuteReader () dans les mêmes conditions qu&#39;une requête manuelle.\nrésumé\nInterroger une base de données est très simple, mais il est essentiel de s&#39;habituer à l&#39;utilisation de requêtes paramétrées, et si possible de procédures stockées.Voici également un code pour résumer l&#39;ensemble:\npublic void getListeClientsDansUneVille (string ville)"},{"id":"text-11","heading":"Text","content":"SqlConnection myConnection = null;\n    essayer\n    \n        myConnection = new SqlConnection (&quot;Source de données = 127.0.0.1,1433; Catalogue initial = MaBase; ID utilisateur = Krimog; Mot de passe = myPass;&quot;);\n        SqlCommand myCommand = new SqlCommand ();\n        myOrder.Connection = maConnexion;\n        myOrder.CommandText = &quot;SELECT CustomerName, CustomerName FROM Clients WHERE CustomerCity = @City;&quot;;\n        myOrder.Parameters.Add (nouveau SqlParameter (&quot;@ City&quot;, city));\n        myConnection.Open ();\n        SqlDataReader myReader = myOrder.ExecuteReader ();\n        if (! myReader.HasRows)\n        \n            Console.WriteLine (&quot;Aucun client ne vit dans&quot; + ville);\n        \n        autre\n        \n            while (myReader.Read ())\n            \n                Console.WriteLine (myReader[\"PrenomClient\"].ToString () + &quot;&quot; + myReader[\"NomClient\"].ToString () + &quot;habite&quot; + ville);\n            \n        \n    \n    capture\n    \n        Console.WriteLine (&quot;Erreur de connexion ou d&#39;exécution de la demande&quot;);\n    \n    enfin\n    \n        if (myConnection! = null &amp;&amp; myConnection.State == ConnectionState.Open)\n        \n            myConnection.Close ();"},{"id":"text-12","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":""},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2020/07/18/connexion-a-une-base-de-donnees-en-c-serveur-dimpression/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2020/07/18/connexion-a-une-base-de-donnees-en-c-serveur-dimpression/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2020/07/18/connexion-a-une-base-de-donnees-en-c-serveur-dimpression/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}