Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách chèn nhiều hình ảnh vào bảng cơ sở dữ liệu MySQL với khóa ngoại tham chiếu đến một khóa chính duy nhất

Vấn đề của bạn là dòng này:

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

Điều này sẽ hoạt động trên lần chèn đầu tiên, vì LAST_INSERT_ID là giá trị khóa ngoại thích hợp.

Nhưng vào thứ hai chèn, LAST_INSERT_ID hiện đã thay đổi thành giá trị ID của bản ghi bạn vừa chèn (lần chèn đầu tiên).

Để khắc phục điều này, bạn cần lấy LAST_INSERT_ID vào biến C # , rồi chuyển nó vào mọi câu lệnh SQL tiếp theo (tức là @ForeignKeyID thay vì LAST_INSERT_ID ).

Điều này có nghĩa là thay đổi đầu tiên của bạn :

cmd.ExecuteNonQuery();

tới:

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

trong đó ID được chèn là một biến (có thể là int ) mà bạn khai báo ở đầu phương thức của mình.

Sau đó, bạn sẽ cần phải thay đổi:

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

tới:

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. MySQL:Xáo trộn kết quả truy vấn hạn chế?

  2. sao lưu cơ sở dữ liệu mysql với mysqldump

  3. Làm cách nào để thiết lập ASP.NET MVC 2 với MySQL?

  4. Ví dụ về SEC_TO_TIME () - MySQL

  5. MySQL lấy số hàng trong bảng innodb