hoangphuong2003
Banned
- Xu
- 0
Database là Microsoft SQL Server
1. Tạo database có tên: TestImageDB với 1 bảng có tên tblImages và có cấu trúc như hình sau:
2. Tạo stored project có tên InsertImage với sql script như sau:
CREATE PROCEDURE InsertImage
@filename nvarchar(250),
@blobdata image
AS
insert into tblImages values(
@filename, @blobdata
)
3. Tạo Windows Form Application Project có tên AnotherWay.
4. Tạo lớp ConnectDB.cs có nội dung như sau:
using System;
using System.Collections.Generic;
using System.IO;
using System.Data;
using System.Data.SqlClient;
namespace AnotherWay
{
class ConnectDB
{
private SqlConnection conn;
private string connectionString = "Server=.;UID=sa;PWD=;Initial Catalog=TestImageDB";
public ConnectDB()
{
conn = new SqlConnection(connectionString);
}
public void StorePicture(string filename)
{
byte[] imageData = null;
// Read the file into a byte array
using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
imageData = new Byte[fs.Length];
fs.Read(imageData, 0, (int)fs.Length);
}
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("InsertImage", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@filename", filename);
cmd.Parameters["@filename"].Direction = ParameterDirection.Input;
cmd.Parameters.Add("@blobdata", SqlDbType.Image);
cmd.Parameters["@blobdata"].Direction = ParameterDirection.Input;
// Store the byte array within the image field
cmd.Parameters["@blobdata"].Value = imageData;
conn.Open();
cmd.ExecuteNonQuery();
}
}
public byte[] RetrieveImage()
{
byte[] imageData = null;
conn.Open();
SqlCommand cmd = new SqlCommand("select blobdata from tblImages", conn);
// Assume previously established command and connection
// The command SELECTs the IMAGE column from the table
using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
reader.Read();
// Get size of image data - pass null as the byte array parameter
long bytesize = reader.GetBytes(0, 0, null, 0, 0);
// Allocate byte array to hold image data
imageData = new byte[bytesize];
long bytesread = 0;
int curpos = 0;
int chunkSize = 1;
while (bytesread < bytesize)
{
// chunkSize is an arbitrary application defined value
bytesread += reader.GetBytes(0, curpos, imageData, curpos, chunkSize);
curpos += chunkSize;
}
}
conn.Close();
// byte array 'imageData' now contains BLOB from database
return imageData;
}
}
}
5. Thiết kế Form như hình
6. Code cho Form:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace AnotherWay
{
public partial class Form1 : Form
{
private ConnectDB conDB;
public Form1()
{
InitializeComponent();
conDB = new ConnectDB();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "JPG Files(*.JPG)|*.JPG|GIF Files(*.GIF)|*.GIF";
if (dlg.ShowDialog(this) == DialogResult.OK)
{
conDB.StorePicture(dlg.FileName);
}
}
private void button2_Click(object sender, EventArgs e)
{
byte[] img = conDB.RetrieveImage();
MemoryStream str = new MemoryStream(img);
pictureBox1.Image = Image.FromStream(str);
}
}
}
7. Thực thi
Trước hết nhấn nút Lưu, sau đó muốn xem lại mẫu tin đã lưu, nhấn nút load.
Chúc thành công!
Theo vovanhai
Nguồn: Cách lưu hình ảnh vào database trong C sharp (P2)
________________________________________________________________________________
Nghề kiểm thử phần mềm bạn đã biết chưa?
1. Tạo database có tên: TestImageDB với 1 bảng có tên tblImages và có cấu trúc như hình sau:
2. Tạo stored project có tên InsertImage với sql script như sau:
CREATE PROCEDURE InsertImage
@filename nvarchar(250),
@blobdata image
AS
insert into tblImages values(
@filename, @blobdata
)
3. Tạo Windows Form Application Project có tên AnotherWay.
4. Tạo lớp ConnectDB.cs có nội dung như sau:
using System;
using System.Collections.Generic;
using System.IO;
using System.Data;
using System.Data.SqlClient;
namespace AnotherWay
{
class ConnectDB
{
private SqlConnection conn;
private string connectionString = "Server=.;UID=sa;PWD=;Initial Catalog=TestImageDB";
public ConnectDB()
{
conn = new SqlConnection(connectionString);
}
public void StorePicture(string filename)
{
byte[] imageData = null;
// Read the file into a byte array
using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
imageData = new Byte[fs.Length];
fs.Read(imageData, 0, (int)fs.Length);
}
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("InsertImage", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@filename", filename);
cmd.Parameters["@filename"].Direction = ParameterDirection.Input;
cmd.Parameters.Add("@blobdata", SqlDbType.Image);
cmd.Parameters["@blobdata"].Direction = ParameterDirection.Input;
// Store the byte array within the image field
cmd.Parameters["@blobdata"].Value = imageData;
conn.Open();
cmd.ExecuteNonQuery();
}
}
public byte[] RetrieveImage()
{
byte[] imageData = null;
conn.Open();
SqlCommand cmd = new SqlCommand("select blobdata from tblImages", conn);
// Assume previously established command and connection
// The command SELECTs the IMAGE column from the table
using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
reader.Read();
// Get size of image data - pass null as the byte array parameter
long bytesize = reader.GetBytes(0, 0, null, 0, 0);
// Allocate byte array to hold image data
imageData = new byte[bytesize];
long bytesread = 0;
int curpos = 0;
int chunkSize = 1;
while (bytesread < bytesize)
{
// chunkSize is an arbitrary application defined value
bytesread += reader.GetBytes(0, curpos, imageData, curpos, chunkSize);
curpos += chunkSize;
}
}
conn.Close();
// byte array 'imageData' now contains BLOB from database
return imageData;
}
}
}
5. Thiết kế Form như hình
6. Code cho Form:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace AnotherWay
{
public partial class Form1 : Form
{
private ConnectDB conDB;
public Form1()
{
InitializeComponent();
conDB = new ConnectDB();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "JPG Files(*.JPG)|*.JPG|GIF Files(*.GIF)|*.GIF";
if (dlg.ShowDialog(this) == DialogResult.OK)
{
conDB.StorePicture(dlg.FileName);
}
}
private void button2_Click(object sender, EventArgs e)
{
byte[] img = conDB.RetrieveImage();
MemoryStream str = new MemoryStream(img);
pictureBox1.Image = Image.FromStream(str);
}
}
}
7. Thực thi
Trước hết nhấn nút Lưu, sau đó muốn xem lại mẫu tin đã lưu, nhấn nút load.
Chúc thành công!
Theo vovanhai
Nguồn: Cách lưu hình ảnh vào database trong C sharp (P2)
________________________________________________________________________________
Nghề kiểm thử phần mềm bạn đã biết chưa?