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:\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.iteye.com");  
    264.         }  
    265.  
    266.         #endregion  
    267.     }  
    268. }  
posted @ 2013-08-08 16:09  月嘿风高  阅读(2018)  评论(0编辑  收藏  举报