IT
关键字: oracle 数据库 blob 字段 图片 存储 保存 插入
需要打开源码

改一下数据源和表名还有字段名

C#代码 复制代码
  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.ComponentModel;   
  4. using System.Data;   
  5. using System.Drawing;   
  6. using System.Text;   
  7. using System.Windows.Forms;   
  8.   
  9. using System.IO;   
  10. using System.Data.OleDb;   
  11.   
  12. namespace ImageSaveOracleBlobDataBase   
  13. {   
  14.     public partial class Form1 : Form   
  15.     {   
  16.         /// <summary>    
  17.         /// 作者:黑色头发   
  18.         /// C# WinForm操作oracle数据库的Blob字段   
  19.         /// blog:http://heisetoufa.javaeye.com   
  20.         /// 静网:http://www.heisetoufa.cn   
  21.         /// </summary>    
  22.   
  23.         public Form1()   
  24.         {   
  25.             InitializeComponent();   
  26.         }  
  27.  
  28.         #region 保存图片到oracle数据库   
  29.   
  30.         private void button1_Click(object sender, EventArgs e)   
  31.         {   
  32.             string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";   
  33.             OleDbConnection con = new OleDbConnection(cnnstr);   
  34.             try  
  35.             {   
  36.                 con.Open();   
  37.             }   
  38.             catch  
  39.             { }   
  40.             OleDbCommand cmd = new OleDbCommand(cnnstr, con);   
  41.   
  42.             cmd.CommandType = CommandType.Text;   
  43.             cmd.CommandText = cnnstr;   
  44.   
  45.             string imgPath = @"d:\aa\a.jpg";//图片文件所在路径   
  46.             FileStream file = new FileStream(imgPath, FileMode.Open, FileAccess.Read);   
  47.             Byte[] imgByte = new Byte[file.Length];//把图片转成 Byte型 二进制流   
  48.             file.Read(imgByte, 0, imgByte.Length);//把二进制流读入缓冲区   
  49.             file.Close();   
  50.   
  51.   
  52.             cmd.CommandText = " insert into kk.kkzp ( xh,zp ) values ('17',:zp) ";//正常sql语句插入数据库   
  53.   
  54.             cmd.Parameters.Add("zp", System.Data.OleDb.OleDbType.Binary, imgByte.Length);   
  55.             cmd.Parameters[0].Value = imgByte;   
  56.   
  57.             try  
  58.             {   
  59.                 cmd.ExecuteNonQuery();   
  60.                 MessageBox.Show("插入成功");   
  61.             }   
  62.             catch (System.Exception e1)   
  63.             {   
  64.                 MessageBox.Show(e1.Message);   
  65.             }   
  66.         }  
  67.  
  68.         #endregion  
  69.  
  70.  
  71.         #region 修改图片   
  72.   
  73.         private void button2_Click(object sender, EventArgs e)   
  74.         {   
  75.             string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";   
  76.             OleDbConnection con = new OleDbConnection(cnnstr);   
  77.   
  78.             string imgPath = @"d:\aa\b.jpg";//图片文件所在路径   
  79.             FileStream file = new FileStream(imgPath, FileMode.Open, FileAccess.Read);   
  80.             Byte[] ddd = new Byte[file.Length];//把图片转成 Byte型 二进制流   
  81.             file.Read(ddd, 0, ddd.Length);//把二进制流读入缓冲区   
  82.             file.Close();   
  83.   
  84.   
  85.             string strSQL = "update kk.kkzp set zp=:zp where xh = '16' ";   
  86.             try  
  87.             {   
  88.                 con.Open();   
  89.             }   
  90.             catch  
  91.             { }   
  92.             OleDbCommand cmd = new OleDbCommand(cnnstr, con);   
  93.   
  94.             cmd.CommandType = CommandType.Text;   
  95.             cmd.CommandText = strSQL;   
  96.             cmd.Parameters.Add("zp", System.Data.OleDb.OleDbType.Binary, ddd.Length).Value = ddd;   
  97.             cmd.ExecuteNonQuery();   
  98.             MessageBox.Show("修改成功");   
  99.         }  
  100.  
  101.         #endregion  
  102.  
  103.  
  104.         #region 读出数据库里图片   
  105.   
  106.         private void button3_Click(object sender, EventArgs e)   
  107.         {   
  108.             string strSQL = "select xh,zp from kk.kkzp where xh = 16 ";   
  109.             string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";   
  110.             OleDbConnection con = new OleDbConnection(cnnstr);   
  111.             try  
  112.             {   
  113.                 con.Open();   
  114.             }   
  115.             catch  
  116.             { }   
  117.             OleDbCommand cmd = new OleDbCommand(strSQL, con);   
  118.             System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader();   
  119.             while (dr.Read())   
  120.             {   
  121.                 if (dr["zp"] != DBNull.Value)//照片字段里有值才能进到方法体显示图片,否则清空pb      
  122.                 {   
  123.                     MemoryStream ms = new MemoryStream((byte[])dr["zp"]);//把照片读到MemoryStream里      
  124.                     Image imageBlob = Image.FromStream(ms, true);//用流创建Image      
  125.                     pictureBox1.Image = imageBlob;//输出图片      
  126.                     pictureBox1.Image.Save("d:\\abcc.jpg", pictureBox1.Image.RawFormat);   
  127.                 }   
  128.                 else//照片字段里没值,清空pb      
  129.                 {   
  130.                     pictureBox1.Image = null;   
  131.                 }      
  132.             }   
  133.         }  
  134.  
  135.         #endregion  
  136.  
  137.  
  138.         #region 使文本编辑变得可见   
  139.   
  140.         private void button4_Click(object sender, EventArgs e)   
  141.         {   
  142.             textBox1.Visible = true;   
  143.             button5.Visible = true;   
  144.             button6.Visible = true;   
  145.             button7.Visible = true;   
  146.         }  
  147.  
  148.         #endregion  
  149.  
  150.         #region 保存文本   
  151.   
  152.         private void button5_Click(object sender, EventArgs e)   
  153.         {   
  154.             string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";   
  155.             OleDbConnection con = new OleDbConnection(cnnstr);   
  156.             try  
  157.             {   
  158.                 con.Open();   
  159.             }   
  160.             catch  
  161.             { }   
  162.             OleDbCommand cmd = new OleDbCommand(cnnstr, con);   
  163.   
  164.             cmd.CommandType = CommandType.Text;   
  165.             cmd.CommandText = cnnstr;   
  166.   
  167.             string txvalue = this.textBox1.Text.Trim();   
  168.   
  169.             //将textBox1.Text转换为二进制类型   
  170.             byte[] expbyte = System.Text.Encoding.Unicode.GetBytes(txvalue);   
  171.   
  172.             cmd.CommandText = " insert into kk.kkzp ( xh,zp ) values ('18',:zp) ";   
  173.   
  174.             cmd.Parameters.Add("zp", System.Data.OleDb.OleDbType.Binary, expbyte.Length);   
  175.             cmd.Parameters[0].Value = expbyte;   
  176.   
  177.             try  
  178.             {   
  179.                 cmd.ExecuteNonQuery();   
  180.                 MessageBox.Show("插入结束");   
  181.             }   
  182.             catch (System.Exception e1)   
  183.             {   
  184.                 MessageBox.Show(e1.Message);   
  185.             }   
  186.         }  
  187.  
  188.         #endregion  
  189.  
  190.  
  191.         #region 修改文本   
  192.   
  193.         private void button6_Click(object sender, EventArgs e)   
  194.         {   
  195.             string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";   
  196.             OleDbConnection con = new OleDbConnection(cnnstr);   
  197.   
  198.             byte[] ddd;   
  199.             ddd = System.Text.Encoding.Unicode.GetBytes(this.textBox1.Text);   
  200.             string strSQL = "update kk.kkzp set zp=:zp where xh = 18 ";   
  201.             try  
  202.             {   
  203.                 con.Open();   
  204.             }   
  205.             catch  
  206.             { }   
  207.             OleDbCommand cmd = new OleDbCommand(cnnstr, con);   
  208.   
  209.             cmd.CommandType = CommandType.Text;   
  210.             cmd.CommandText = strSQL;   
  211.             cmd.Parameters.Add("zp", System.Data.OleDb.OleDbType.Binary, ddd.Length).Value = ddd;   
  212.             cmd.ExecuteNonQuery();   
  213.             MessageBox.Show("OK!");   
  214.         }  
  215.  
  216.         #endregion  
  217.  
  218.           
  219.         #region 读出文本   
  220.   
  221.         private void button7_Click(object sender, EventArgs e)   
  222.         {   
  223.             string strSQL = "select xh,zp from kk.kkzp where xh = 18 ";   
  224.             string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";   
  225.             OleDbConnection con = new OleDbConnection(cnnstr);   
  226.             try  
  227.             {   
  228.                 con.Open();   
  229.             }   
  230.             catch  
  231.             { }   
  232.             OleDbCommand cmd = new OleDbCommand(strSQL, con);   
  233.             System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader();   
  234.             while (dr.Read())   
  235.             {   
  236.   
  237.                 //读取BLOB数据时也要将其转换回文本类型   
  238.                 string dd = dr["zp"].ToString();   
  239.                 byte[] ooo = (byte[])dr["zp"];   
  240.                 string str;   
  241.                 str = System.Text.Encoding.Unicode.GetString(ooo);   
  242.                 this.textBox1.Text = str;   
  243.             }   
  244.         }  
  245.  
  246.         #endregion  
  247.  
  248.  
  249.         #region 退出   
  250.   
  251.         private void button8_Click(object sender, EventArgs e)   
  252.         {   
  253.             Application.Exit();   
  254.         }  
  255.  
  256.         #endregion  
  257.  
  258.  
  259.         #region 单击状态栏   
  260.   
  261.         private void toolStripStatusLabel2_Click(object sender, EventArgs e)   
  262.         {   
  263.             System.Diagnostics.Process.Start("http://heisetoufa.javaeye.com");   
  264.         }  
  265.  
  266.         #endregion   
  267.     }   
  268. }  
posted on 2010-05-19 13:32  liufei  阅读(624)  评论(0编辑  收藏  举报