sql >> Database >  >> RDS >> Mysql

Meerdere afbeeldingen invoegen in de MySQL-databasetabel met een externe sleutel die verwijst naar een enkele primaire sleutel

Jouw probleem is deze regel:

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

Dit werkt bij de eerste invoeging, aangezien LAST_INSERT_ID is de juiste externe sleutelwaarde.

Maar op de tweede invoegen, LAST_INSERT_ID is nu gewijzigd in de ID-waarde van het record dat u zojuist hebt ingevoegd (de eerste invoeging).

Om dit op te lossen, moet u LAST_INSERT_ID . ophalen in een C#-variabele , en geef het vervolgens door aan elke volgende SQL-instructie (d.w.z. @ForeignKeyID in plaats van LAST_INSERT_ID ).

Dit betekent dat je je eerste . moet wijzigen :

cmd.ExecuteNonQuery();

naar:

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

waarbij insertID een variabele is (waarschijnlijk int ) die u bovenaan uw methode declareert.

U moet dan het volgende wijzigen:

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

naar:

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



  1. Symfony2 Doctrine PDO MySQL Verbinding met LOAD DATA LOKAAL INFILE

  2. Importfout - Geen lokalisatieondersteuning voor taal 'eng'

  3. Gegevens draaien in T-SQL

  4. SQL Server-synchronisatie met MySQL-programma