Tải bản đầy đủ (.pptx) (15 trang)

LƯU HÌNH ẢNH VÀO DATABASE

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (233.23 KB, 15 trang )

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
Method Fill(), method này là một đặc trưng của ADO.NET được cung
cấp để truyền dữ liệu các DataSet và nó TỰ ĐỘNG mở kết nối khi gọi nó
nếu như kết nối không được mở. Và sau 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.

TẠO LỚP KẾT NỐI VỚI CƠ SỞ DỮ LiỆU
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ỚP KẾT NỐI

Để đọc dữ liệu hình ảnh ra ta dùng 1 mảng Byte để chứa giá trị của ~eld

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 MemoryStream(i);
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();
pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
}
LƯU HÌNH ẢNH VÀO DATABASE

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×