博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# winform 操作oracle数据库,把图片存储到数据库,保存图片到数据库
阅读量:4601 次
发布时间:2019-06-09

本文共 8985 字,大约阅读时间需要 29 分钟。

View Code
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 /// 作者:黑色头发 18 /// C# WinForm操作oracle数据库的Blob字段 19 /// blog:http://heisetoufa.iteye.com 20 /// 静网:http://www.heisetoufa.cn 21 /// 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 }

 

转载于:https://www.cnblogs.com/jimfrank/articles/2250606.html

你可能感兴趣的文章
UIView属性
查看>>
将博客搬至CSDN
查看>>
Java线程Dump分析工具--jstack【转载】
查看>>
day32(网络编程1)
查看>>
远程服务器git搭建
查看>>
牛人们的博客地址
查看>>
Zabbix是什么?
查看>>
源码:COCO微博
查看>>
Linux Windows平台添加pip源
查看>>
vue版本升级可能导致的问题
查看>>
c#中保存与删除cookies值
查看>>
C++ - extern “C”含义深层探索
查看>>
凸包模板
查看>>
Alpha版——版本控制报告(Thunder)
查看>>
POJ1007(DNA Sorting)
查看>>
单项联表和双向联表的区别
查看>>
APP测试工具之TraceView卡顿检测
查看>>
面向对象预习随笔
查看>>
Servlet写hello world
查看>>
读书笔记三
查看>>