Tải bản đầy đủ (.doc) (3 trang)

Lưu và dọc ảnh bằng C

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 (65.61 KB, 3 trang )

lưu và dọc ảnh bằng C#
Tôi xin giới thiệu với các bạn về cách chúng ta ghi và đọc với kiểu dữ liệu Image trong Sql
Server với ngôn ngữ C# .
Bắt đầu dự án
Bạn tạo 1 dự án bạn tạo 1 Form với các Controls như sau
1 Button với tên bt_addpicture để lưu ảnh vào database
1 Button với tên bt_Dispaly để hiển thị ảnh
1 ListBox để chứa tên ảnh
1 PictureBox để hiển thị ảnh với chế độ Auto Size
Chuổi kết nối :
String connectionstring = @”Server=(local),uid=sa;database=Northwind”;Lưu ý bạn cần
thay đổi lại chuổi kết nối của bạn cho phù hợp
Câu lệnh tạo bảng Picture
string cmd = "create table Picture" +
"(" +
"PictureID int IDENTITY(0,1) NOT NULL PRIMARY KEY, " +
"PictureName varchar(40) NOT NULL, " +
"Picture Image NOT NULL" +
");";
SqlConnection c = new SqlConnection(c_string);
SqlCommand cm = new SqlCommand(cmd,c);
try
{
c.Open();
cm.ExecuteNonQuery();
}
catch (SqlException ee)
{
MessageBox.Show(ee.Message);
}
finally


{
c.Close();
}Tiếp theo chúng ta thực hiện insert Image vào trong databse. Ta viết code cho Event
bt_add_Click như sau:
Khi thực hiện Click vào bt _add thì hiển thị 1 OpenDileDialog cho phép chúng ta lựa chọn
ảnh.
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "All Pictures|*.bmp;*.gif;*.jpg|Bitmaps|*.bmp|GIFs|*.gi f|JPEGs|*.jpg";
if ( dlg.ShowDialog() ==DialogResult.OK )
{
pictureBox1.Image = new Bitmap(dlg.FileName);
string name=dlg.FileName.Substring(dlg.FileName.LastIndex Of(@"\")+1
,dlg.FileName.Length-dlg.FileName.LastIndexOf(@"\")-1);
}
Tiếp theo chúng ta tạo 1 đối tượng MemoryStream để đọc Image thành byte[]
MemoryStream mstr = new MemoryStream();
pictureBox1.Image.Save(mstr, pictureBox1.Image.RawFormat);
byte[] arrImage = mstr.GetBuffer();Chuổi câu lệnh để insert image vào database, với 2
tham số @PName, @Pic
string cmd = "insert into Picture (PictureName, Picture) values (@PName, @Pic)";Tiếp
theo chúng ta thực hiện Insert Image và database đồng thời Add tên Image này lên ListBox
listImageName
SqlConnection c = new SqlConnection(c_string); // tạo đối tượng kết nối mới
SqlCommand comm = new SqlCommand(cmd,c);
comm.Parameters.Add( new SqlParameter("@PName", SqlDbType.VarChar,40)).Value =
name;
comm.Parameters.Add( new SqlParameter("@Pic",SqlDbType.Image)).Value = arrImage;
try
{
c.Open();

comm.ExecuteNonQuery();
}
catch(SqlException err)
{
MessageBox.Show(err.Message);
}
finally
{
c.Close();
}
listImageName.Items.Add(name);Đã thực hiện xong quá trình lưu ảnh vào database. Việc
tiếp theo chúng ta phải làm là Đọc Image từ Database, chúng ta viết Code cho Event Click
bt_Dispaly như sau:
if (listImageName.SelectedIndex<0)
{
MessageBox.Show("Please select a picture from the ListBox");
}
else
{
string cmd = "SELECT picture FROM Picture where PictureID="+
listImageName.SelectedIndex +";";
SqlConnection cc = new SqlConnection(c_string);
SqlCommand com = new SqlCommand(cmd,cc);
try
{
cc.Open();
byte[] b = (byte [])com.ExecuteScalar(); // đọc dữ liệu kiểu byte
MemoryStream mem = new MemoryStream(b);
pictureBox1.Image = Image.FromStream(mem);
}

catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
finally
{
cc.Close();
}Lưu ý việc chạy lại Chương trình lần 2 sẽ phát sinh ra lỗi khi thực hiện câu lệnh tạo bảng
vì bảng Picture đã tồn tại. Nên bạn có thể tạo trước trong Database Sql Server. Hoặc bạn
cũng có thể tham khảo thêm đoạn code sau, nó dùng để xóa 1 bảng trong Databse.
string cmd = "drop table Picture;";
SqlConnection c = new SqlConnection(c_string);
SqlCommand cm = new SqlCommand(cmd,c);
try
{
c.Open();
cm.ExecuteNonQuery();
}
catch (SqlException ee)
{
MessageBox.Show(ee.Message);.
Cốt lõi trong bài này là chúng ta có thể học được cách lưu và đọc ảnh trực tiếp vào cơ sở
dữ liệu, chứ không phải mất công lưu đường dẫn của nó như 1 số bạn vẫn làm nữa. Chúc
các bạn thành công
Code

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

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