• c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库


    ///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:aaa.jpg";//图片文件所在路径
    			FileStream file = new FileStream(imgPath, FileMode.Open, FileAccess.Read);
    			Byte[] imgByte = new Byte[file.Length];//把图片转成 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[0].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.jpg";//图片文件所在路径
    			FileStream file = new FileStream(imgPath, FileMode.Open, FileAccess.Read);
    			Byte[] ddd = new Byte[file.Length];//把图片转成 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[0].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
    	}
    }
    

      

    效果图

  • 相关阅读:
    集合框架之——迭代器并发修改异常ConcurrentModificationException
    Python day 3 (3) 判断与循环
    hdu 5335 Walk Out(bfs+斜行递推) 2015 Multi-University Training Contest 4
    hdu 2473 Junk-Mail Filter(并查集_虚节点)2008 Asia Regional Hangzhou
    hdu 1573 x问题(中国剩余定理)HDU 2007-1 Programming Contest
    hdu 3461 Code Lock(并查集)2010 ACM-ICPC Multi-University Training Contest(3)
    hdu 2155 小黑的镇魂曲(dp) 2008信息工程学院集训队——选拔赛
    hdu 4081 Qin Shi Huang's National Road System(最小生成树+dp)2011 Asia Beijing Regional Contest
    hdu 3938 Portal(并查集+离线+kruskal)2011 Multi-University Training Contest 10
    hdu 3172 Virtual Friends(并查集)University of Waterloo Local Contest 2008.09
  • 原文地址:https://www.cnblogs.com/felix-wang/p/6905003.html
Copyright © 2020-2023  润新知