加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2012-11-23 12:44:34)
标签:

c

类型

文本

图片

数据库

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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有