sql >> Databáze >  >> RDS >> Mysql

Jak vložit více obrázků do databázové tabulky MySQL s cizím klíčem odkazujícím na jediný primární klíč

Váš problém je tento řádek:

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

Toto bude fungovat při prvním vložení od LAST_INSERT_ID je vhodná hodnota cizího klíče.

Ale na druhé vložit, LAST_INSERT_ID se nyní změnilo na hodnotu ID záznamu, který jste právě vložili (první vložení).

Chcete-li to opravit, musíte získat LAST_INSERT_ID do proměnné C# a poté jej předejte do každého následujícího příkazu SQL (tj. @ForeignKeyID spíše než LAST_INSERT_ID ).

To bude znamenat změnu vašeho prvního :

cmd.ExecuteNonQuery();

komu:

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

kde insertID je proměnná (pravděpodobně int ), kterou deklarujete v horní části vaší metody.

Poté budete muset změnit:

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

komu:

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. Rozdělte jeden sloupec na více řádků

  2. výchozí pro sloupec xxxx nelze automaticky přetypovat na typ boolean v Postgres DB

  3. Primární klíč Java JDBC Oracle Database

  4. php preg_split nerozpoznává mezery