Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да вмъкнете множество изображения в таблица на MySQL база данни с външен ключ, препращащ към един първичен ключ

Вашият проблем е този ред:

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

Това ще работи при първото вмъкване, тъй като LAST_INSERT_ID е подходящата стойност на външен ключ.

Но на втория вмъкване, LAST_INSERT_ID сега се промени на стойността на ID на записа, който току-що сте вмъкнали (първото вмъкване).

За да коригирате това, трябва да получите LAST_INSERT_ID в C# променлива и след това го предайте във всеки следващ SQL оператор (т.е. @ForeignKeyID вместо LAST_INSERT_ID ).

Това ще означава промяна на вашияпърви :

cmd.ExecuteNonQuery();

до:

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

където insertedID е променлива (вероятно int ), които декларирате в началото на вашия метод.

След това ще трябва да промените:

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

до:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL SELECT ORDER BY множество колони в зависимост от стойността на друга колона

  2. Пуснете неназован външен ключ в MySql

  3. Уникално ограничение на Mysql, позволяващо един ред за комбинация

  4. Групиране на записи от цикъл while | PHP

  5. SQL JOIN:Просто не мога да ги разбера