Heim >Datenbank >MySQL-Tutorial >Wie füge ich mithilfe von C# mit gespeicherten Prozeduren Parameter in MySQL ein und vermeide den Fehler „Personenspalte darf nicht null sein'?

Wie füge ich mithilfe von C# mit gespeicherten Prozeduren Parameter in MySQL ein und vermeide den Fehler „Personenspalte darf nicht null sein'?

Susan Sarandon
Susan SarandonOriginal
2024-11-23 06:04:37961Durchsuche

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

Einfügen von Parametern in MySQL mit C# mithilfe gespeicherter Prozeduren

Im Bereich der Datenbankinteraktionen kann häufig die Aufgabe entstehen, neue Datensätze hinzuzufügen. Bei der Arbeit mit der Programmiersprache C# und MySQL-Datenbanken kann es vorkommen, dass Sie Daten mithilfe von Parametern in eine Tabelle einfügen müssen, um die Datenintegrität sicherzustellen und SQL-Injection-Angriffe zu verhindern.

Ein gängiger Ansatz ist die Verwendung der Parametersammlung der MySqlCommand-Klasse, um die Parameter zu definieren, die in der SQL-Anweisung verwendet werden. In Ihrem speziellen Fall wollten Sie Werte für die Personen- und Adressspalten in die Raumtabelle einfügen, sind aber auf einen Fehler gestoßen, der besagt, dass die Personenspalte nicht null sein darf.

Um dieses Problem zu beheben, müssen Sie zuweisen Geben Sie vor der Ausführung des Befehls Werte in die Parameter ein. Dies kann mithilfe der AddWithValue-Methode erreicht werden, die Parametertypkonvertierungen automatisch verarbeitet, oder durch explizite Angabe des Parametertyps und Festlegen der Value-Eigenschaft.

Verwendung der AddWithValue-Methode:

// 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();
}

Verwenden von Parametertyp und -wert Eigenschaft:

// ... (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)

Darüber hinaus besteht eine weitere Alternative darin, Positionsparameter zu verwenden, die durch Fragezeichen (?) in der SQL-Anweisung gekennzeichnet sind:

// ... (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)

Durch die Verwendung dieser Parametrisierungstechniken Sie können Daten sicher in Ihre MySQL-Datenbank einfügen und gleichzeitig SQL-Injection-Schwachstellen verhindern.

Das obige ist der detaillierte Inhalt vonWie füge ich mithilfe von C# mit gespeicherten Prozeduren Parameter in MySQL ein und vermeide den Fehler „Personenspalte darf nicht null sein'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn