zoukankan      html  css  js  c++  java
  • c# winform 操作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.iteye.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:aaa.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.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.iteye.com");  
      264.         }  
      265.  
      266.         #endregion  
      267.     }  
      268. }  
  • 相关阅读:
    c++11 可变参数模板类
    c++11 可变参数模板函数
    c++11 函数模板的默认模板参数
    c++11 模板的别名
    超声波模块SRF05
    Eclipse中快捷键的使用
    移动互联网教育领域或将出现新的风口?
    java Date 和 javascript Date
    linux下安装node.js
    J2EE之初识JSP
  • 原文地址:https://www.cnblogs.com/Devil1314/p/3246034.html
Copyright © 2011-2022 走看看