Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
176,27 KB
Nội dung
LƯU HÌNH ẢNH VÀO DATABASE NGUYỄN HUY THẮNG 09520660 BÙI CHÍ THIỆN 09520662 LƯU HÌNH ẢNH VÀO DATABASE 1 2 3 4 5 MỤC ĐÍCH TẠO CƠ SỞ DỮ LiỆU GIAO DiỆN FORM CHÍNH TẠO LỚP KẾT NỐI CƠ SỞ DỮ LiỆU LƯU HÌNH ẢNH VÀO DATABASE Đôi khi bạn cần lưu trữ hình ảnh trong cơ sở dữ liệu thay vì các tập tin vật lý. Ứng dụng này trên Windows Form giúp cho người lập trình tạo ra một giao diên thân thiện và dễ sử dụng cho người dùng. Tuy nhiên, lưu trữ hình ảnh vào database cũng có một khuyết điểm lớn làm cho tập tin trở nên tốn bộ nhớ Đối với các tập tin dạng Text(văn bản) như txt,doc,rtf,html…thì bạn có thể đọc toàn bộ nội dung tập tin vào một chuỗi String và lưu chuỗi đó vào database. Kiểu khai báo dữ liệu trong database có thể là text,varchar, nvarchar tuỳ thuộc vào cơ sở dữ liệu bạn thiết kế. MỤC ĐÍCH Đối với tập tin binary (tập tin nhị phân) như com,exe, jpg,bmp,…thì nội dung cần khai báo vào một mảng Byte (khai báo trong chương trình là Byte[]) và lưu mảng này vào Database, kiểu dữ liệu trong database là Binary. MỤC ĐÍCH TẠO CƠ SỞ DỮ LiỆU Database trong SQLServer: Ta tạo một database hình ảnh với tên là QLHinh trong SQLServer với 2 thuộc tính là IDHinh (thuộc tính khoá chính)và Picture như sau: Giao diện gồm: picturebox, datagridwiew, textbox (Ma Hinh), button (Mo Hinh, Lưu vào Database, Đóng Ứng Dụng) GIAO DiỆN FORM CHÍNH: Trước hết, ta tạo một lớp có tên là ketnoi.cs. Lớp này dùng để đọc dữ liệu từ database cũng như cập nhật dữ liệu xuống Database Ta khai báo các đối tượng: sqlConnection, Dataset, sqlAdapter. SqlConnection: dùng để chỉ rõ là chúng ta kết nối đến đâu. Để chỉ định các thông tin như Server Name, Database Name, Authentication thì ta cần phải truyền vào cho constructor của lớp SqlConnection một chuỗi kết nối (Connection String).Nói một cách tổng quát, chuỗi kết nối là cách chúng ta truyền vào thông tin cách thức kết nối đến nguồn dữ liệu. Ví dụ, xét chuỗi kết nối sau: “Data Source=.\sqlexpress;Initial Catalog=AdventureWorksLT2008;Integrated Security=True”. TẠO LỚP KẾT NỐI VỚI CƠ SỞ DỮ LiỆU DataSet: đây là đối tượng mà sẽ chứa toàn bộ dữ liệu chúng ta truy xuất được từ database. Ứng dụng của chúng ta sẽ thao tác trên dữ liệu trong DataSet này. Sử dụng DataSet cho phép chúng ta chỉ truy xuất dữ liệu từ database 1 lần duy nhất và kết nối đến Database sẽ được ngắt đi ngay sau khi truy xuất. SqlDataAdapter: đối tượng của lớp này hoạt động như là một cầu nối để đưa dữ liệu từ database đổ vào DataSet. Đối tượng lớp này chịu trách nhiệm tự động quản lý đóng mở kết nối đến database. TẠO LỚP KẾT NỐI VỚI CƠ SỞ DỮ LiỆU Mô hình quan hệ giữa DataSet, SqlDataAdapter, SQL TẠO LỚP KẾT NỐI VỚI CƠ SỞ DỮ LiỆU Để lấy tất cả mẫu tin trong Database ta khai báo. public DataSet daQLH() { ds = new DataSet(); daHinh = new SqlDataAdapter("select* from Hinh",con); //tao va lap day DataSet daHinh.Fill(ds,"Hinh"); return ds; } TẠO LỚP KẾT NỐI VỚI CƠ SỞ DỮ LiỆU [...]... Để đọc dữ liệu hình ảnh ra ta dùng 1 mảng Byte để chứa giá trị của field Picture Sau đó muốn hiển thị nó lên PictureBox ta phải dùng MemoryStream để đưa ra: try { Byte[] i = (byte[])row["Picture"]; MemoryStream MstmData = new pictureBox1.Image = Image.FromStream(MstmData); } MemoryStream(i); LƯU HÌNH ẢNH VÀO DATABASE Để cập nhật dữ liệu vào database, ta phải lấy ảnh từ PictureBox vào 1 MemoryStream:... khi Fill vào DataSet thì lại tự động đóng kết nối Mọi việc ở đây nằm trong quyền kiểm soát của cái Adapter Khi lưu hình ảnh xong ta cần cập nhật sự thay đổi trong CSDL LỚP KẾT NỐI public void CapNhatHinh () { try { SqlCommandBuilder cmdb = new SqlCommandBuilder(daHinh); daHinh.Update(ds, "Hinh"); //return bd; } catch(Exception e) { //bat loi Console.WriteLine(e.Message); } } LƯU HÌNH ẢNH VÀO DATABASE. .. phải lấy ảnh từ PictureBox vào 1 MemoryStream: { MemoryStream ms = new pictureBox1.Image.Save(ms, } MemoryStream(); System.Drawing.Imaging.ImageFormat.Jpeg); LƯU HÌNH ẢNH VÀO DATABASE Để cập nhật dữ liệu vào database, ta phải lấy ảnh từ PictureBox vào 1 MemoryStream: { MemoryStream ms = new pictureBox1.Image.Save(ms, } MemoryStream(); System.Drawing.Imaging.ImageFormat.Jpeg); . LƯU HÌNH ẢNH VÀO DATABASE NGUYỄN HUY THẮNG 09520660 BÙI CHÍ THIỆN 09520662 LƯU HÌNH ẢNH VÀO DATABASE 1 2 3 4 5 MỤC ĐÍCH TẠO CƠ SỞ DỮ LiỆU GIAO. pictureBox1.Image = Image.FromStream(MstmData); } LƯU HÌNH ẢNH VÀO DATABASE Để cập nhật dữ liệu vào database, ta phải lấy ảnh từ PictureBox vào 1 MemoryStream: { MemoryStream ms = new MemoryStream();. pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); } LƯU HÌNH ẢNH VÀO DATABASE Để cập nhật dữ liệu vào database, ta phải lấy ảnh từ PictureBox vào 1 MemoryStream: { MemoryStream ms = new MemoryStream();