開發環境 VS2010+Access
在access數據庫中新建數據庫 並新建一張表 建兩個字段 IMAGENAME,IMANGEBINARY
新建工程->winform程序
在窗體上 拖拽一個button按鈕和一個picturebox
代碼
private void button1_Click(object sender, EventArgs e)
{
using (OpenFileDialog dialog = new OpenFileDialog())
{
dialog.Filter = "jpg|*.jpg";
dialog.Multiselect = false;
if (dialog.ShowDialog() == DialogResult.OK)
{
string fImageName = Path.GetFileNameWithoutExtension(dialog.FileName);
FileStream fs = new FileStream(dialog.FileName, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] fInputImageBinary = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
// 保存到數據庫
if (this.InsertImageToAccess(fImageName, fInputImageBinary) > 0)
{
//MessageBox.Show("插入成功");
}
// 從數據庫獲取圖片並顯示到 pictureBox1
Byte[] fOutputImageBinary = this.GetImageFromAccess(fImageName);
MemoryStream ms = new MemoryStream(fOutputImageBinary);
pictureBox1.Image = Image.FromStream(ms);
}
}
}
public int InsertImageToAccess(String fImageName, Byte[] fImageBinary)
{
// Access 表// 字段// ImageName 文本// ImageBinary OLE 對象
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\RacialCarDB.mdb"))
{
OleDbCommand fInsertCommand = new OleDbCommand();
fInsertCommand.Connection = conn;
fInsertCommand.CommandText = "update tb_carBrandInfo set logo = ? where qcpp = ?";
fInsertCommand.Parameters.Add("@logo", OleDbType.Binary, fImageBinary.Length).Value = fImageBinary;
fInsertCommand.Parameters.Add("@qcpp", OleDbType.VarChar).Value = fImageName;
conn.Open();
return fInsertCommand.ExecuteNonQuery();
}
}
public Byte[] GetImageFromAccess(String fImageName)
{
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\RacialCarDB.mdb"))
{
OleDbCommand fSelectCommand = new OleDbCommand();
fSelectCommand.Connection = conn;
fSelectCommand.CommandText = "SELECT logo FROM tb_carBrandInfo WHERE qcpp = @qcpp";
fSelectCommand.Parameters.Add("@qcpp", OleDbType.VarChar).Value = fImageName; conn.Open();
object o = fSelectCommand.ExecuteScalar();
return (o == null ? null : (Byte[])o);
}
}