C#操作SQL Server中的Image类型数据
该例子是一个对SQL Server数据类型的一个操作例子,具有写入、读取功能。
1:准备数据库
1)创建数据库 Test
2)创建表 Table_1 (分别有2个字段:id(Int)、photo(Image))
如图:
2:用C#进行读写操作,完整代码如下:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.Data.SqlClient;
- using System.IO;
- namespace imageTest
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void btn_brewse_Click(object sender, EventArgs e)
- {
- OpenFileDialog op = new OpenFileDialog();
- op.Title = "浏览图像文件";
- op.Filter = "图像文件(*.jpg)|*.jpg";
- op.ShowDialog();
- txt_ImageAddress.Text = op.FileName;
- }
- private void btn_Insert_Click(object sender, EventArgs e)
- {
- FileStream fs = new FileStream(txt_ImageAddress.Text,FileMode.Open,FileAccess.Read);
- byte[] byteArray = new byte[fs.Length];
- fs.Read(byteArray,0,Convert.ToInt32(fs.Length));
- fs.Close();
- string connectionStr = "Server=.;Database=Test;Uid=sa;Pwd=123456";
- SqlConnection conn = new SqlConnection(connectionStr);
- conn.Open();
- SqlCommand cmd = new SqlCommand("INSERT INTO Table_1(photo) VALUES(@photo)",conn);
- SqlParameter parmeter = new SqlParameter("@photo", SqlDbType.Image);
- parmeter.Value = byteArray;
- cmd.Parameters.Add(parmeter);
- int result = cmd.ExecuteNonQuery();
- if (result > 0)
- MessageBox.Show("插入成功");
- conn.Close();
- }
- private void btn_ReadImage_Click(object sender, EventArgs e)
- {
- string connectionStr = "Server=.;Database=Test;Uid=sa;Pwd=123456";
- SqlConnection conn = new SqlConnection(connectionStr);
- conn.Open();
- SqlCommand cmd = new SqlCommand("SELECT * FROM Table_1",conn);
- SqlDataReader dr = cmd.ExecuteReader();
- dr.Read();
- byte[] image = (byte[])dr["photo"];
- conn.Close();
- if (image.Length == 0)
- return;
- string photoUrl = Environment.CurrentDirectory + "\1.jpg";
- FileStream fs = new FileStream(photoUrl, FileMode.OpenOrCreate, FileAccess.Write);
- BinaryWriter bw = new BinaryWriter(fs);
- bw.BaseStream.Write(image, 0, image.Length);
- bw.Flush();
- bw.Close();
- picbox_image.ImageLocation = photoUrl;
- }
- }
- }
效果如图:
完整项目(包含数据库文件)下载地址:http://download.****.net/source/3576866
相关推荐
- 查询sql server数据库中字段内容长度的方法
- wpf 展示从sql server Image类型数据 wpf 展示sql server 中iamge类型数据
- Sql Server 因为触发器问题导致数据库更新报错“在触发器执行过程中引发了错误,批处理已中止”的问题处理
- SQL Server 第四堂课,创建存储过程。存储过程是一组编译在单个执行计划中的transact-SQL语句。存储过程相当于C#函数,可以允许模块化程序设计,允许更快执行如果某操作需要大量transct-SQL代码或需要重复执行,将在创建存储过程中对其进行分析和优化。
- SQL Server 第三堂课,学习数据库函数。跟C#语言异曲同工,同样是由输入参数,输出参数,函数体,返回值四要素组成,不同的是语法和写法。掌握知识的关键在与学好C#语言的函数
- 【原】数据库SQL语句入门 1.数据定义DDL(Data Definition Language)语言即对表结构的一些定义,主要包括动词为CREATE/DROP/ALTER。 2.数据操纵语言DML(Data Manipulation Language)即对表格数据中的一些操作,包括的动词为SELECT/INSERT/UPDATE/DELETE
- Mysql索引的相关操作 索引方面的限制: 索引的类型 添加索引: explain 解释sql执行 常用的存储引擎 查看数据库执行sql语句所用时间的语句:
- J2EE学习篇之--JDBC详解 分类: JavaWeb 2014-05-18 20:05 2761人阅读 评论(1) 收藏 摘要: JDBC的使用步骤 使用JDBC来实现CRUD的操作 Statement中的sql依赖注入的问题 JDBC中特殊数据类型的操作问题 JDBC中事务的概念 JDBC中调用存储过程 JDBC来实现批处理功能 JDBC中的滚动结果集和分页技术 JDBC中的可更新以及对更新敏感的结果集操作 元数据的相关知识 JDBC中的数据源 JDBC中CRUD的模板模式 Spring框架中的JdbcTemplate
- mysql 复习 SQL DDL: 操作数据库、表 DML: 增删改表中数据 DQL: 查询表中的记录 DQL: 查询语句 约束 数据库的设计 数据库的备份和还原 多表查询 事务 DCL
- Java基础学习总结(93)——Java编码规范之代码性能及惯例 1、避免使用包装类构造函数 2、面向接口编程时,推荐使用接口的声明方式 3、单个方法代码行数尽量保持在80-100行之内 4、数据库及磁盘IO等操作,必须在try-catch-finally块的finally中执行close()方法 5、不要在循环体内进行数据库的“连接-关闭”操作 6、大量(如超过五次以上的“+=”运算)的字符串操作应使用StringBuilder或StringBuffer,尽量避免使用String 7、不要在循环条件中使用表达式 8、应尽可能的以指明容量大小的方式对ArrayList进行实例化 9、集合中的数据如果不使用了应该及时释放 10、不要在循环体内声明变量 11、非正常运行产生的异常被捕获后,必须对异常进行处理 12、尽量定位异常类型,不要一律catch(Exception ex) 13、尽量避免一个方法中一个大的try块,catch一个Exception的代码方式,如果有必要可以使用多个try-catc
- 【SQL server基础】objectproperty()函数 SQL Server OBJECTPROPERTY使用方法
- linux下svn常用指令