sql >> Databasteknik >  >> RDS >> Mysql

Hur man infogar flera bilder i MySQL-databastabellen med främmande nyckel som refererar till en enda primärnyckel

Ditt problem är denna rad:

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

Detta kommer att fungera vid första infogning, eftersom LAST_INSERT_ID är lämpligt värde för främmande nyckel.

Men på andra infoga, LAST_INSERT_ID har nu ändrats till ID-värdet för posten du just infogade (den första infogningen).

För att åtgärda detta måste du skaffa LAST_INSERT_ID in i en C#-variabel , och skicka den sedan till varje efterföljande SQL-sats (d.v.s. @ForeignKeyID snarare än LAST_INSERT_ID ).

Detta innebär att du ändrar din första :

cmd.ExecuteNonQuery();

till:

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

där insatt ID är en variabel (sannolikt int ) som du deklarerar överst i din metod.

Du måste sedan ändra:

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

till:

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. 5 säkerhetsfördelar med molnbaserade databasövervakningslösningar

  2. Spring JDBC BeanPropertyRowMapper ja nej ('Y','N') till boolean bean egenskaper

  3. PostgreSQL versionskontroll med Atlassian Bitbucket

  4. Hur RTRIM() fungerar i MariaDB