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

Sådan indsætter du flere billeder i MySQL-databasetabel med fremmednøgle, der refererer til en enkelt primærnøgle

Dit problem er denne linje:

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

Dette vil virke ved første indsættelse, da LAST_INSERT_ID er den passende fremmednøgleværdi.

Men på anden indsæt, LAST_INSERT_ID er nu ændret til ID-værdien for den post, du lige har indsat (den første indsættelse).

For at løse dette skal du have LAST_INSERT_ID ind i en C#-variabel , og send det derefter til hver efterfølgende SQL-sætning (dvs. @ForeignKeyID i stedet for LAST_INSERT_ID ).

Dette vil betyde, at du ændrer din første :

cmd.ExecuteNonQuery();

til:

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

hvor insertedID er en variabel (sandsynligvis int ), som du angiver øverst i din metode.

Du skal derefter ændre:

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

til:

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. SQL Server JDBC-fejl på Java 8:Driveren kunne ikke etablere en sikker forbindelse til SQL Server ved at bruge Secure Sockets Layer (SSL) kryptering

  2. MySQL reverse-i-search

  3. hvordan man opdaterer data ved hjælp af dvaleforespørgsel med overordnet egenskab i where-klausulen

  4. Sådan åbnes en tabel i designvisning i Microsoft Access