lưuvàdọcảnhbằ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ưuvàđọ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 . SqlConnection cc = new SqlConnection (c_ string); SqlCommand com = new SqlCommand(cmd,cc); try { cc.Open(); byte[] b = (byte [])com.ExecuteScalar(); // đ c. 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ở