Tutorial
Unit 5
(Part 5: Insert Image to Database use Sql Server 2000)
Mục đích : Sử dụng đường dẫn file ảnh để lưu vào ảnh vào cơ sơ dữ liệu
Nội dung :
- Lấy đường dẫn ảnh. Upload đường dẫn vào CSDL. Lôi tấm ảnh ra sử dụng.
- Hướng dẫn cách chuyển thành kiểu Byte. Lưu và truy xuất đường dẫn file trong CSDL thông thường.
Yêu cầu:
Visual Studio
Sql Server 2000 : Server Name (Local), database= csdl. User=sa và password=sa;
Okie. Mọi thứ chuẩn bị xong. Giờ ta bắt tay vào thiết kế chương trình thôi nào.
Design:
Thiết kế 1 Form như hình vẽ sau: Gồm 4 button, 2 picturebox, 1 combobox, 1 textbox, 1 statusStrip1
http://www.upanh.com/1/v/11224813.htm
http://c.upanh.com/upload/7/14/CS0.11224813_22660_25093.jpg
Thiết kế CSDL:
http://www.upanh.com/2/v/11224824.htm
http://c.upanh.com/upload/7/14/CS0.11224824_22660_25093.jpg
Tên : csdl
Bảng: csdl_anh
Trường : ID kiểu số- tự động tăng
Name- kiểu Image
Note- Nvachar- cái này ko có cũng chẳng sao ^^ (Nếu muốn ghi chú gì về tấm ảnh thì viết vô đây cũng được)
Xong việc thiết kế giờ ta code cho từng nút nhé. Chú ý là các control tớ để mặc định.
Source code full and Demo here:
http://www.mediafire.com/file/tnklmn4ydmg/InsertImageToSQL_Tesulakata.rar
http://www.mediafire.com/?sharekey=3402828850897022e7c82ed4b8f0c380e07bc9fa7c4dc93579b5ba589d1986ba ( Cả code + File doc hướng dẫn)
1. Other (the last)- Sử dụng Access để lưu file ảnh. Link tại đây
2. End ( the last)._ Load ngẫu nhiên 1 dòng từ file text lên form. ( Sử dụng cho các chương trình trắc nghiệm….) Link tại đây
*********
About : http://hoclaptrinhcanban.tk
Author: Tesulakata@yahoo.com.vn
Phone : 0972.096.906
Unit 5
(Part 5: Insert Image to Database use Sql Server 2000)
Mục đích : Sử dụng đường dẫn file ảnh để lưu vào ảnh vào cơ sơ dữ liệu
Nội dung :
- Lấy đường dẫn ảnh. Upload đường dẫn vào CSDL. Lôi tấm ảnh ra sử dụng.
- Hướng dẫn cách chuyển thành kiểu Byte. Lưu và truy xuất đường dẫn file trong CSDL thông thường.
Yêu cầu:
Visual Studio
Sql Server 2000 : Server Name (Local), database= csdl. User=sa và password=sa;
Okie. Mọi thứ chuẩn bị xong. Giờ ta bắt tay vào thiết kế chương trình thôi nào.
Design:
Thiết kế 1 Form như hình vẽ sau: Gồm 4 button, 2 picturebox, 1 combobox, 1 textbox, 1 statusStrip1
http://www.upanh.com/1/v/11224813.htm
http://c.upanh.com/upload/7/14/CS0.11224813_22660_25093.jpg
Thiết kế CSDL:
http://www.upanh.com/2/v/11224824.htm
http://c.upanh.com/upload/7/14/CS0.11224824_22660_25093.jpg
Tên : csdl
Bảng: csdl_anh
Trường : ID kiểu số- tự động tăng
Name- kiểu Image
Note- Nvachar- cái này ko có cũng chẳng sao ^^ (Nếu muốn ghi chú gì về tấm ảnh thì viết vô đây cũng được)
Xong việc thiết kế giờ ta code cho từng nút nhé. Chú ý là các control tớ để mặc định.
- Code:
0. KHAI BÁO THƯ VIỆN VÀ BIẾN DÙNG CHUNG
a. Thư viện
// Khai bao thu vien
using System.IO;
using System.Data.SqlClient;
b. Biến
// Bien dung chung
string tenanh;
SqlConnection con;
SqlCommand cmd;
SqlDataAdapter da;
DataSet ds;
string chuoi;
1. Tạo một phương thức “mở kết nối”
private void moketnoi()
{
try
{
string ketnoi = "server=(local);database=csdl;user=sa;password=sa";
con = new SqlConnection(ketnoi);
con.Open();
chuoi = "select*from csdl_anh";
cmd = new SqlCommand();
da = new SqlDataAdapter(chuoi, con);
ds = new DataSet();
da.Fill(ds);
DataTable dat = new DataTable();
dat = ds.Tables[0];
comboBox1.Items.Clear();
foreach (DataRow dr in dat.Rows)
{
comboBox1.Items.Add(dr[0].ToString());
comboBox1.SelectedIndex = 0;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
2. Lấy file ảnh trong máy (Sự kiện cho nút nhấn 1- như trên hình vẽ)
private void button1_Click_1(object sender, EventArgs e)
{
// Mo thu muc. Tim den file anh can load
try
{
FileDialog fdg = new OpenFileDialog();
fdg.InitialDirectory = @"d:";
fdg.Filter = "File anh(*.jpg;*.bmp;*.gif)|*jpg;*bmp;*gif";
if (fdg.ShowDialog() == DialogResult.OK)
{
tenanh = fdg.FileName;
Bitmap anh = new Bitmap(tenanh);
// pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
pictureBox1.Image = (Image)anh;
toolStripStatusLabel1.Text = "Đường dẫn file ảnh : " + tenanh;
textBox1.Text = tenanh;
button2.Visible = true;
}
fdg = null;
}
catch (Exception ex)
{
tenanh = " ";
MessageBox.Show(ex.Message);
}
}
3. Lưu file ảnh- lưu ý là csdl phần khóa ID là kiểu số tự động tăng. Do vậy sẽ chỉ thêm vào phần Name trong csdl. Nếu bạn làm ID ko tư động tăng thì phài nhập thông qua một ô textbox khác. Vì khóa không thể để trống được. Xem thêm mục 6. ví dụ thêm qua ID nữa heng. . Code lưu file ảnh này là cho sự kiến nhấn của button2
private void button2_Click(object sender, EventArgs e)
{
// dua file anh vao csdl
try
{
if (tenanh != "")
{
FileStream frm;
frm = new FileStream(@tenanh, FileMode.Open, FileAccess.Read);
byte[] picbyte = new byte[frm.Length];
frm.Read(picbyte, 0, System.Convert.ToInt32(frm.Length));
frm.Close();
// ketnoi
string ketnoi = "server=(local);database=csdl;user=sa;password=sa";
con = new SqlConnection(ketnoi);
con.Open();
chuoi = "insert into csdl_anh(Name) values(@pic)";
SqlParameter picpara = new SqlParameter();
picpara.SqlDbType = SqlDbType.Image;
picpara.ParameterName = "pic";
picpara.Value = picbyte;
cmd = new SqlCommand(chuoi, con);
cmd.Parameters.Add(picpara);
cmd.ExecuteNonQuery();
MessageBox.Show("Image added succesfull");
cmd.Dispose();
con.Dispose();
moketnoi();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
4. Xem file ảnh trong cơ sở dữ liệu ( sự kiến nhấn cho nút thứ 3). Bạn đã đưa file ảnh vào csdl . giờ muốn xem nó thông qua pictuter thì code như sau:
private void button3_Click(object sender, EventArgs e)
{
DataTable datatable = ds.Tables[0];
if (pictureBox2.Image != null)
{
pictureBox2.Image.Dispose();
}
FileStream fs1 = new FileStream("image.jpg", FileMode.Create);
foreach (DataRow datarow in datatable.Rows)
{
if (datarow[0].ToString() == comboBox1.SelectedItem.ToString())
{
byte[] blob = (byte[])datarow[1];
fs1.Write(blob, 0, blob.Length);
fs1.Close();
fs1 = null;
pictureBox2.Image = Image.FromFile("image.jpg");
pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox2.Refresh();
}
}
}
5. Hết ( code nút thoát chứ gì nữa ^^)
Application.Exit();
6. Code bổ sung: Khi bạn không tạo csdl phần ID là kiểu số tự động tăng thì thêm 1 ô textbox nữa vào. Và trước khi, thêm csdl thì phải nhập số vào cho ô textbox này nhé. Code bên dưới là ta thêm vào qua ô textbox6.
chuoi = "insert into csdl_anh(ID,Name)values(" + textBox6.Text + "," + "@pic)";
- giờ đã xong. Bạn thử F5 xem chương trình nó chạy thế nào nhé!
Source code full and Demo here:
http://www.mediafire.com/file/tnklmn4ydmg/InsertImageToSQL_Tesulakata.rar
http://www.mediafire.com/?sharekey=3402828850897022e7c82ed4b8f0c380e07bc9fa7c4dc93579b5ba589d1986ba ( Cả code + File doc hướng dẫn)
1. Other (the last)- Sử dụng Access để lưu file ảnh. Link tại đây
2. End ( the last)._ Load ngẫu nhiên 1 dòng từ file text lên form. ( Sử dụng cho các chương trình trắc nghiệm….) Link tại đây
*********
About : http://hoclaptrinhcanban.tk
Author: Tesulakata@yahoo.com.vn
Phone : 0972.096.906