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 » ?

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 » ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-23 06:04:37945parcourir

How do I insert parameters into MySQL using C# with stored procedures and  avoid  the

Insertion de paramètres dans MySQL avec C# à l'aide de procédures stockées

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn