Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Kiểu dữ liệu để lưu trữ Image trong SQL?

  1. #1
    Ngày gia nhập
    06 2007
    Bài viết
    206

    Mặc định Kiểu dữ liệu để lưu trữ Image trong SQL?

    Theo mình biết thì SQL lưu trữ image dưới dạng kiểu dữ liệu binary.
    Nhưng trong đoạn code mình tham khảo được thì họ lưu image với kiểu image trong SQL luôn. Khi vào SQL 2005 để xem thì ô lưu dữ liệu vào thêm vào lại ko hiển gì chữ gì ngoài <binary data> (lưu thành công ko bị lỗi nha).

    Visual C# Code:
    1. MemoryStream ms = new MemoryStream();
    2.             pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
    3.             byte[] arrImage = ms.GetBuffer();
    4.             ms.Close();
    5.  
    6. string sql = "insert into Image (image) values (@image)";
    7.             SqlCommand cmd = new SqlCommand(sql, con);
    8.             cmd.Parameters.Add(new SqlParameter("@image", SqlDbType.Image)).Value = arrImage;
    Nhưng mình đọc đc trên book online của SQL 2005 thì kiểu image sau này sẽ ko đc sử dụng nữa, thay vào đó là binary(max) và varbinary(max).

    Nếu mình cho kiểu dữ liệu là binary thì phải code sao?
    Mình có sử dụng 1 đoạn code trên mạng thì nó báo là "String or binary would be truncated".

    Mong các bạn hướng dẫn giúp!
    Thà để chửi dốt 1 lần, còn hơn ngu cả đời.

  2. #2
    Ngày gia nhập
    02 2009
    Bài viết
    38

    Ồ hay ghê, nhờ bạn mà mình biết thêm sql có kiểu image, trước giờ chưa nghe bao giờ. Thực ra kiểu image nó chuyển file ảnh thành dạng nhị phân và insert vào db. Khi xóa record đi thì nó xóa được cả file ảnh. Đây là 1 lợi thế vì thường thì ta hay lưu ảnh vào 1 thư mục nào đó và db chỉ chứa đường dẫn đi thôi. Không thể xóa file ảnh bằng lệnh sql khi db chỉ lưu đường dẫn.

    Bạn đưa đoạn code bạn sử dụng lên đây xem nào ?
    Biết thì nói không biết thì rửa tai lắng nghe.

  3. #3
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Bắt buộc phải lưu trữ Image trong SQL Server sao?
    Có thể lưu trữ ờ 1 thư mục khác ko?

  4. #4
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Bạn chịu khó search trong box này thử. lúc trước có 1 bài nói về vấn đề này rồi. (đang ngồi quán net, máy cùi nên hơi bực ) ko search được cho bạn được. .

  5. #5
    Ngày gia nhập
    03 2008
    Bài viết
    63

    Trích dẫn Nguyên bản được gửi bởi nth4 Xem bài viết
    Theo mình biết thì SQL lưu trữ image dưới dạng kiểu dữ liệu binary.
    Nhưng trong đoạn code mình tham khảo được thì họ lưu image với kiểu image trong SQL luôn. Khi vào SQL 2005 để xem thì ô lưu dữ liệu vào thêm vào lại ko hiển gì chữ gì ngoài <binary data> (lưu thành công ko bị lỗi nha).

    Visual C# Code:
    1. MemoryStream ms = new MemoryStream();
    2.             pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
    3.             byte[] arrImage = ms.GetBuffer();
    4.             ms.Close();
    5.  
    6. string sql = "insert into Image (image) values (@image)";
    7.             SqlCommand cmd = new SqlCommand(sql, con);
    8.             cmd.Parameters.Add(new SqlParameter("@image", SqlDbType.Image)).Value = arrImage;
    Nhưng mình đọc đc trên book online của SQL 2005 thì kiểu image sau này sẽ ko đc sử dụng nữa, thay vào đó là binary(max) và varbinary(max).

    Nếu mình cho kiểu dữ liệu là binary thì phải code sao?
    Mình có sử dụng 1 đoạn code trên mạng thì nó báo là "String or binary would be truncated".

    Mong các bạn hướng dẫn giúp!
    Tôi ko lưu cả Image như bạn. Tôi có host và chỉ lưu đường dẫn đến file trong host thôi. Lưu cả ảnh như vậy thường sẽ nặng

    Nếu bạn vẫn muốn dùng cách như trên, thì tôi sẽ giải thích qua lỗi mà bạn đang gặp phải
    String or binary data would be truncated là lỗi khi bạn insert dữ liệu giữa 2 trường có kích thước khác nhau.
    VÍ dụ bảng A có trường 1 là varchar(50), còn bảng B có trường 1 là varchar(20). Khi insert nó sẽ thông báo lỗi như trên

    Cách khắc phục là bạn chỉnh lại sao cho độ lớn của 1 trừong là như nhau.
    Hoặc SET ANSI_WARNINGS OFF trước khi Insert, sau đó SET ANSI_WARNINGS ON

    Tôi thì hay dùng cách 1

  6. #6
    Ngày gia nhập
    06 2007
    Bài viết
    206

    Mặc định Kiểu dữ liệu để lưu trữ Image trong SQL?

    Mình đã đổi binary thành varbinary(max) và thấy OK.
    Cảm ơn các bạn nhiều!
    Thà để chửi dốt 1 lần, còn hơn ngu cả đời.

  7. #7
    Ngày gia nhập
    01 2012
    Bài viết
    3

    Trích dẫn Nguyên bản được gửi bởi nth4 Xem bài viết
    Mình đã đổi binary thành varbinary(max) và thấy OK.
    Cảm ơn các bạn nhiều!
    bạn ơi bạn làm thế nào thế. có thể chỉ cho mình không mình cũng đang cần. mình insert vào được nhưng lúc lấy ảnh ra add vào cho vào stream nó cứ báo lỗi ấy.

  8. #8
    Ngày gia nhập
    10 2012
    Nơi ở
    quảng nam
    Bài viết
    1

    Mặc định binary trong sql

    các bác giúp mình với mình chọn kiểu dữ liệu là image nhưng không thể up hình vào được có bác nào biết giúp mình với. để đổ ra datalist trong asp.
    Attached Thumbnails Attached Thumbnails Untitled.png  

Các đề tài tương tự

  1. Cách hiển thị image trong datalist từ sql?
    Gửi bởi mrpi92 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 2
    Bài viết cuối: 09-12-2013, 11:46 AM
  2. Load Image trong file word(đã chuyển thành binary trong csdl) lên trình duyệt
    Gửi bởi Mr.BiBi trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 3
    Bài viết cuối: 05-12-2013, 08:45 AM
  3. [WPF] Cách load Image vào Image control như thế nào?
    Gửi bởi cutithongtin trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 12-05-2011, 09:54 PM
  4. Lấy một vùng image trong image
    Gửi bởi shinichith25 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 08-12-2010, 06:29 AM
  5. Cách lưu một image trong C#?
    Gửi bởi bui_ta_hau trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 19-06-2009, 07:34 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn