Mysql
 sql >> Database >  >> RDS >> Mysql

Come inserire più immagini nella tabella del database MySQL con una chiave esterna che fa riferimento a una singola chiave primaria

Il tuo problema è questa riga:

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

Funzionerà al primo inserimento, poiché LAST_INSERT_ID è il valore di chiave esterna appropriato.

Ma al secondo inserisci, LAST_INSERT_ID è ora cambiato nel valore ID del record appena inserito (il primo inserto).

Per risolvere questo problema, devi ottenere LAST_INSERT_ID in una variabile C# , e quindi passarlo in ogni successiva istruzione SQL (ad esempio @ForeignKeyID anziché LAST_INSERT_ID ).

Ciò significherà cambiare il tuo prima :

cmd.ExecuteNonQuery();

a:

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

dove IDinserito è una variabile (probabilmente int ) che dichiari all'inizio del tuo metodo.

Dovrai quindi modificare:

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

a:

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