oracle数据库存取图片

    数据库存取图片信息,有两种方式:

    1)转换成二进制数据存储,故首先设置对应的数据字段数据类型为Blob.

    2)服务器设置路径保存上传文件,数据库中只存储文件路径。

    这里采用第一种方式简单示范如何存储并取出图片。涉及几个类的使用,已经做出简单注释。

  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. using System.IO;
  9. using System.Data.OracleClient;//添加引用
  10. namespace ImageDemo
  11. {
  12.     public partial class Form1 : Form
  13.     {
  14.         OpenFileDialog filedialog;
  15.         string connstr = "";
  16.         public Form1()
  17.         {
  18.             connstr = "Data Source=xxx;user id=xxx;password=xxx";
  19.             InitializeComponent();
  20.         }
  21.         /// <summary>
  22.         /// 获得要上传的文件
  23.         /// </summary>
  24.         /// <param name="sender"></param>
  25.         /// <param name="e"></param>
  26.         private void button2_Click(object sender, EventArgs e)
  27.         {
  28.             filedialog = new OpenFileDialog();
  29.             filedialog.FilterIndex = 1;
  30.             filedialog.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*";
  31.             if (filedialog.ShowDialog() == DialogResult.OK)
  32.             {
  33.                 txtpath.Text = filedialog.FileName;
  34.             }
  35.         }
  36.         /// <summary>
  37.         /// 上传到数据库中:往数据库存入图片信息
  38.         /// </summary>
  39.         /// <param name="sender"></param>
  40.         /// <param name="e"></param>
  41.         private void button1_Click(object sender, EventArgs e)
  42.         {
  43.             Cursor.Current = Cursors.WaitCursor;
  44.             //获得上传图片的二进制信息
  45.             byte[] buffer = File.ReadAllBytes(txtpath.Text.Trim());
  46.             Random rd = new Random();
  47.             string name = rd.Next(999).ToString();
  48.             string sql = "insert into ivan_qq_user(id,name,image) values('"+Guid.NewGuid().ToString()+"','"+name+"',:image)";
  49.             using (OracleConnection conn = new OracleConnection(connstr))
  50.             {
  51.                 conn.Open();
  52.                 OracleCommand cmd = new OracleCommand(sql, conn);
  53.                 //指名参数类型为Blob
  54.                 cmd.Parameters.Add(":image", OracleType.Blob);
  55.                 cmd.Parameters[":image"].Value = buffer;
  56.                 cmd.ExecuteNonQuery();
  57.             }
  58.             PreviewImage(name);
  59.             Cursor.Current = Cursors.Default;
  60.             MessageBox.Show("Done.....");
  61.         }
  62.         /// <summary>
  63.         /// 预览图像信息:从数据库读图片信息
  64.         /// </summary>
  65.         /// <param name="name"></param>
  66.         private void PreviewImage(string name)
  67.         {
  68.             ISDApp01.ISDApp01 isd = new ImageDemo.ISDApp01.ISDApp01();
  69.             string sql = "select image from IVAN_QQ_USER where name='"+name+"'";
  70.             using (OracleConnection conn = new OracleConnection(connstr))
  71.             {
  72.                 conn.Open();
  73.                 OracleCommand cmd = new OracleCommand(sql,conn);
  74.                 //获得数据信息并转换成二进制
  75.                 byte[] fileData = cmd.ExecuteScalar() as byte[];
  76.                 MemoryStream ms = new MemoryStream(fileData);
  77.                 //把二进制信息转换成image并show出
  78.                 Image image = Image.FromStream(ms);
  79.                 pictureBox1.Image = image;
  80.             }
  81.         }
  82.     }
  83. }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值