Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So fügen Sie mehrere Bilder in eine MySQL-Datenbanktabelle ein, wobei der Fremdschlüssel auf einen einzelnen Primärschlüssel verweist

Ihr Problem ist diese Zeile:

using (MySqlCommand cmd = new MySqlCommand("INSERT INTO propertyimage(MultipleImageName, MultipleImageMap, PropertyID) VALUES (@MultipleImageName, @MultipleImageMap, LAST_INSERT_ID()); "))

Dies funktioniert beim ersten Einfügen seit LAST_INSERT_ID ist der entsprechende Fremdschlüsselwert.

Aber in der Sekunde einfügen, LAST_INSERT_ID hat sich nun in den ID-Wert des gerade eingefügten Datensatzes (der ersten Einfügung) geändert.

Um dies zu beheben, müssen Sie LAST_INSERT_ID abrufen in eine C#-Variable , und übergeben Sie es dann an jede nachfolgende SQL-Anweisung (d. h. @ForeignKeyID statt LAST_INSERT_ID ).

Dies bedeutet, dass Sie Ihre erste ändern müssen :

cmd.ExecuteNonQuery();

zu:

cmd.ExecuteNonQuery();
insertedID = cmd.LastInsertedId;

wobei insertID eine Variable ist (wahrscheinlich int ), die Sie oben in Ihrer Methode deklarieren.

Sie müssen dann Folgendes ändern:

using (MySqlCommand cmd = new MySqlCommand("INSERT INTO propertyimage(MultipleImageName, MultipleImageMap, PropertyID) VALUES (@MultipleImageName, @MultipleImageMap, LAST_INSERT_ID()); "))
{


    using (MySqlDataAdapter sda = new MySqlDataAdapter())
    {

        cmd.Parameters.AddWithValue("@MultipleImageName", file.FileName);
        cmd.Parameters.AddWithValue("@MultipleImageMap", "ImagesUploaded/" + file.FileName);

        cmd.Connection = con;
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }
}

zu:

using (MySqlCommand cmd = new MySqlCommand("INSERT INTO propertyimage(MultipleImageName, MultipleImageMap, PropertyID) VALUES (@MultipleImageName, @MultipleImageMap, @InsertedID); "))
{


    using (MySqlDataAdapter sda = new MySqlDataAdapter())
    {

        cmd.Parameters.AddWithValue("@MultipleImageName", file.FileName);
        cmd.Parameters.AddWithValue("@MultipleImageMap", "ImagesUploaded/" + file.FileName);
        cmd.Parameters.AddWithValue("@MultipleImageMap", "ImagesUploaded/" + file.FileName);
        cmd.Parameters.AddWithValue("@InsertedID", InsertedID);

        cmd.Connection = con;
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }
}