Maison > Article > base de données > Comment insérer des paramètres dans MySQL en utilisant C# avec des procédures stockées et éviter l'erreur « la colonne personne ne peut pas être nulle » ?
Dans le domaine des interactions avec les bases de données, la tâche d'ajouter de nouveaux enregistrements peut souvent survenir. Lorsque vous travaillez avec le langage de programmation C# et les bases de données MySQL, vous pouvez rencontrer des situations dans lesquelles vous devez insérer des données dans une table à l'aide de paramètres pour garantir l'intégrité des données et empêcher les attaques par injection SQL.
Une approche courante consiste à utiliser la collection Parameters. de la classe MySqlCommand pour définir les paramètres qui seront utilisés dans l'instruction SQL. Dans votre cas spécifique, vous souhaitiez insérer des valeurs pour les colonnes personne et adresse dans la table des salles, mais vous avez rencontré une erreur indiquant que la colonne personne ne pouvait pas être nulle.
Pour résoudre ce problème, vous devez attribuer valeurs aux paramètres avant d’exécuter la commande. Ceci peut être réalisé à l'aide de la méthode AddWithValue, qui gère automatiquement les conversions de types de paramètres, ou en spécifiant explicitement le type de paramètre et en définissant la propriété Value.
Utilisation de la méthode AddWithValue :
// Create a connection to the MySQL database string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString; using (MySqlConnection conn = new MySqlConnection(connString)) { conn.Open(); // Prepare the SQL statement using (MySqlCommand comm = conn.CreateCommand()) { comm.CommandText = "INSERT INTO room(person, address) VALUES(@person, @address)"; // Add parameters using the AddWithValue method comm.Parameters.AddWithValue("@person", "MyName"); comm.Parameters.AddWithValue("@address", "MyAddress"); // Execute the command to insert the data comm.ExecuteNonQuery(); } conn.Close(); }
Utilisation du type de paramètre et de la valeur property :
// ... (code as before) // Prepare the SQL statement using (MySqlCommand comm = conn.CreateCommand()) { comm.CommandText = "INSERT INTO room(person, address) VALUES(@person, @address)"; // Add parameters with explicit types and set values comm.Parameters.Add("@person", MySqlDbType.VarChar).Value = "MyName"; comm.Parameters.Add("@address", MySqlDbType.VarChar).Value = "MyAddress"; // Execute the command to insert the data comm.ExecuteNonQuery(); } // ... (code as before)
De plus, une autre alternative consiste à utiliser des paramètres de position indiqués par des points d'interrogation (?) dans l'instruction SQL :
// ... (code as before) // Prepare the SQL statement with positional parameters using (MySqlCommand comm = conn.CreateCommand()) { comm.CommandText = "INSERT INTO room(person, address) VALUES(?person, ?address)"; // Add parameters using positional syntax comm.Parameters.Add("?person", MySqlDbType.VarChar).Value = "MyName"; comm.Parameters.Add("?address", MySqlDbType.VarChar).Value = "MyAddress"; // Execute the command to insert the data comm.ExecuteNonQuery(); } // ... (code as before)
En utilisant ces techniques de paramétrage, vous pouvez insérer des données en toute sécurité dans votre base de données MySQL tout en empêchant les vulnérabilités d'injection SQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!