c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库
需要打开源码改一下数据源和表名还有字段名
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Data.OleDb;namespace ImageSaveOracleBlobDataBase{public partial class Form1 : Form{/// <summary> /// 作者:黑色头发/// C# WinForm操作oracle数据库的Blob字段/// blog:http://heisetoufa.iteye.com/// 静网:http://www.heisetoufa.cn/// </summary> public Form1(){InitializeComponent();}#region 保存图片到oracle数据库private void button1_Click(object sender, EventArgs e){string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";OleDbConnection con = new OleDbConnection(cnnstr);try{con.Open();}catch{ }OleDbCommand cmd = new OleDbCommand(cnnstr, con);cmd.CommandType = CommandType.Text;cmd.CommandText = cnnstr;string imgPath = @"d:\aa\a.jpg";//图片文件所在路径FileStream file = new FileStream(imgPath, FileMode.Open, FileAccess.Read);Byte[] imgByte = new Byte;//把图片转成 Byte型 二进制流file.Read(imgByte, 0, imgByte.Length);//把二进制流读入缓冲区file.Close();cmd.CommandText = " insert into kk.kkzp ( xh,zp ) values ('17',:zp) ";//正常sql语句插入数据库cmd.Parameters.Add("zp", System.Data.OleDb.OleDbType.Binary, imgByte.Length);cmd.Parameters.Value = imgByte;try{cmd.ExecuteNonQuery();MessageBox.Show("插入成功");}catch (System.Exception e1){MessageBox.Show(e1.Message);}}#endregion#region 修改图片private void button2_Click(object sender, EventArgs e){string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";OleDbConnection con = new OleDbConnection(cnnstr);string imgPath = @"d:\aa\b.jpg";//图片文件所在路径FileStream file = new FileStream(imgPath, FileMode.Open, FileAccess.Read);Byte[] ddd = new Byte;//把图片转成 Byte型 二进制流file.Read(ddd, 0, ddd.Length);//把二进制流读入缓冲区file.Close();string strSQL = "update kk.kkzp set zp=:zp where xh = '16' ";try{con.Open();}catch{ }OleDbCommand cmd = new OleDbCommand(cnnstr, con);cmd.CommandType = CommandType.Text;cmd.CommandText = strSQL;cmd.Parameters.Add("zp", System.Data.OleDb.OleDbType.Binary, ddd.Length).Value = ddd;cmd.ExecuteNonQuery();MessageBox.Show("修改成功");}#endregion#region 读出数据库里图片private void button3_Click(object sender, EventArgs e){string strSQL = "select xh,zp from kk.kkzp where xh = 16 ";string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";OleDbConnection con = new OleDbConnection(cnnstr);try{con.Open();}catch{ }OleDbCommand cmd = new OleDbCommand(strSQL, con);System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader();while (dr.Read()){if (dr["zp"] != DBNull.Value)//照片字段里有值才能进到方法体显示图片,否则清空pb {MemoryStream ms = new MemoryStream((byte[])dr["zp"]);//把照片读到MemoryStream里 Image imageBlob = Image.FromStream(ms, true);//用流创建Image pictureBox1.Image = imageBlob;//输出图片 pictureBox1.Image.Save("d:\\abcc.jpg", pictureBox1.Image.RawFormat);}else//照片字段里没值,清空pb {pictureBox1.Image = null;} }}#endregion#region 使文本编辑变得可见private void button4_Click(object sender, EventArgs e){textBox1.Visible = true;button5.Visible = true;button6.Visible = true;button7.Visible = true;}#endregion#region 保存文本private void button5_Click(object sender, EventArgs e){string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";OleDbConnection con = new OleDbConnection(cnnstr);try{con.Open();}catch{ }OleDbCommand cmd = new OleDbCommand(cnnstr, con);cmd.CommandType = CommandType.Text;cmd.CommandText = cnnstr;string txvalue = this.textBox1.Text.Trim();//将textBox1.Text转换为二进制类型byte[] expbyte = System.Text.Encoding.Unicode.GetBytes(txvalue);cmd.CommandText = " insert into kk.kkzp ( xh,zp ) values ('18',:zp) ";cmd.Parameters.Add("zp", System.Data.OleDb.OleDbType.Binary, expbyte.Length);cmd.Parameters.Value = expbyte;try{cmd.ExecuteNonQuery();MessageBox.Show("插入结束");}catch (System.Exception e1){MessageBox.Show(e1.Message);}}#endregion#region 修改文本private void button6_Click(object sender, EventArgs e){string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";OleDbConnection con = new OleDbConnection(cnnstr);byte[] ddd;ddd = System.Text.Encoding.Unicode.GetBytes(this.textBox1.Text);string strSQL = "update kk.kkzp set zp=:zp where xh = 18 ";try{con.Open();}catch{ }OleDbCommand cmd = new OleDbCommand(cnnstr, con);cmd.CommandType = CommandType.Text;cmd.CommandText = strSQL;cmd.Parameters.Add("zp", System.Data.OleDb.OleDbType.Binary, ddd.Length).Value = ddd;cmd.ExecuteNonQuery();MessageBox.Show("OK!");}#endregion#region 读出文本private void button7_Click(object sender, EventArgs e){string strSQL = "select xh,zp from kk.kkzp where xh = 18 ";string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";OleDbConnection con = new OleDbConnection(cnnstr);try{con.Open();}catch{ }OleDbCommand cmd = new OleDbCommand(strSQL, con);System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader();while (dr.Read()){//读取BLOB数据时也要将其转换回文本类型string dd = dr["zp"].ToString();byte[] ooo = (byte[])dr["zp"];string str;str = System.Text.Encoding.Unicode.GetString(ooo);this.textBox1.Text = str;}}#endregion#region 退出private void button8_Click(object sender, EventArgs e){Application.Exit();}#endregion#region 单击状态栏private void toolStripStatusLabel2_Click(object sender, EventArgs e){System.Diagnostics.Process.Start("http://heisetoufa.iteye.com");}#endregion}}
黑色头发:http://heisetoufa.iteye.com
页:
[1]