该例子是一个对SQL Server数据类型的一个操作例子,具有写入、读取功能。

1:准备数据库

1)创建数据库 Test

2)创建表 Table_1 (分别有2个字段:id(Int)、photo(Image))

如图:

2:用C#进行读写操作,完整代码如下:

[csharp] view
plain
 copy

print?

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Data.SqlClient;
  10. using System.IO;
  11. namespace imageTest
  12. {
  13. public partial class Form1 : Form
  14. {
  15. public Form1()
  16. {
  17. InitializeComponent();
  18. }
  19. private void btn_brewse_Click(object sender, EventArgs e)
  20. {
  21. OpenFileDialog op = new OpenFileDialog();
  22. op.Title = "浏览图像文件";
  23. op.Filter = "图像文件(*.jpg)|*.jpg";
  24. op.ShowDialog();
  25. txt_ImageAddress.Text = op.FileName;
  26. }
  27. private void btn_Insert_Click(object sender, EventArgs e)
  28. {
  29. FileStream fs = new FileStream(txt_ImageAddress.Text,FileMode.Open,FileAccess.Read);
  30. byte[] byteArray = new byte[fs.Length];
  31. fs.Read(byteArray,0,Convert.ToInt32(fs.Length));
  32. fs.Close();
  33. string connectionStr = "Server=.;Database=Test;Uid=sa;Pwd=123456";
  34. SqlConnection conn = new SqlConnection(connectionStr);
  35. conn.Open();
  36. SqlCommand cmd = new SqlCommand("INSERT INTO Table_1(photo) VALUES(@photo)",conn);
  37. SqlParameter parmeter = new SqlParameter("@photo", SqlDbType.Image);
  38. parmeter.Value = byteArray;
  39. cmd.Parameters.Add(parmeter);
  40. int result = cmd.ExecuteNonQuery();
  41. if (result > 0)
  42. MessageBox.Show("插入成功");
  43. conn.Close();
  44. }
  45. private void btn_ReadImage_Click(object sender, EventArgs e)
  46. {
  47. string connectionStr = "Server=.;Database=Test;Uid=sa;Pwd=123456";
  48. SqlConnection conn = new SqlConnection(connectionStr);
  49. conn.Open();
  50. SqlCommand cmd = new SqlCommand("SELECT * FROM Table_1",conn);
  51. SqlDataReader dr = cmd.ExecuteReader();
  52. dr.Read();
  53. byte[] image = (byte[])dr["photo"];
  54. conn.Close();
  55. if (image.Length == 0)
  56. return;
  57. string photoUrl = Environment.CurrentDirectory + "\\1.jpg";
  58. FileStream fs = new FileStream(photoUrl, FileMode.OpenOrCreate, FileAccess.Write);
  59. BinaryWriter bw = new BinaryWriter(fs);
  60. bw.BaseStream.Write(image, 0, image.Length);
  61. bw.Flush();
  62. bw.Close();
  63. picbox_image.ImageLocation = photoUrl;
  64. }
  65. }
  66. }

效果如图:

完整项目(包含数据库文件)下载地址:http://download.csdn.net/source/3576866

C#操作SQL Server中的Image类型数据的更多相关文章

  1. delphi 转换sql server 中的 bit类型

    FieldByName('e').AsBoolean = false 其中e为 sql server 中的bit类型.

  2. 快速查看SQL Server 中各表的数据量以及占用空间大小

    快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(1 ...

  3. 浅析SQL Server 中的SOS_SCHEDULER_YIELD类型的等待

    本文出处:http://www.cnblogs.com/wy123/p/6856802.html 进程的状态转换 在说明SOS_SCHEDULER_YIELD等待之前,先简要介绍一下进程的状态(迷迷糊 ...

  4. SQL Server中时间段查询和数据类型转换

    不知道什么时候对数据独有情种,也许是因为所学专业的缘故,也许是在多年的工作中的亲身经历,无数据,很多事情干不了,数据精度不够,也很多事情干不了,有一次跟一个朋友开玩笑说,如果在写论文的时候,能有一份独 ...

  5. 【SQL Server数据迁移】64位的机器:SQL Server中查询ORACLE的数据

    从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 .64位的机器和软件, 需要用不同的驱动程序来实现. 在64位的机 ...

  6. 【SQL Server数据迁移】32位的机器:SQL Server中查询ORACLE的数据

    从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 .64位的机器和软件,需要用不同的驱动程序来实现. 在32位的机器 ...

  7. 将SQL SERVER中查询到的数据导成一个Excel文件

    -- ====================================================== T-SQL代码: EXEC master..xp_cmdshell 'bcp 库名. ...

  8. 向SQL Server中导入Excel的数据

    1.  手动界面导入Excel数据 同 https://jingyan.baidu.com/article/ce09321b9a0e252bff858ff9.html 首先打开并登陆sql serve ...

  9. SQL Server中的uniqueidentifier类型

    uniqueidentifier类型可以配合T-SQL中的newid和newsequentialid来生成唯一标识符,具体区别如下(摘抄自微软官方文档). Nonsequential GUIDs: Y ...

随机推荐

  1. C语言的运算符的优先级与结合性+ASCII表

    [0]README 0.1) 内容来源于 C程序设计语言, 旨在整理出C语言的运算符的优先级与结合性, 如下图所示(哥子 记了大半年都没有记住,也是醉了,每次都要去翻): Alert)以下内容转自:h ...

  2. C++钩子程序浅析

    在网上搜索“键盘记录C++”实现可以找到很多相关文章,我也是照着上面的介绍去研究去试着做的,从懂到不懂.那么为什么有那么多材料我还要去写这样一篇 文章,我想这个是我个人需要关心的问题,我不是那种ctr ...

  3. Swift实战(一): 剪子包袱锤ios应用

    来自十奶的大作业教学视频. http://www.swiftv.cn/course/ic2tqzob 主要了解了MVC模型. 首先是View,通过设计mainstoryboard构建UI界面,主要靠拖 ...

  4. python跳坑手记

    解决python同目录报错:import util 改成 from . import util

  5. spring AOP(切面) 表达式介绍

    在 spring AOP(切面) 例子基础上对表达式进行介绍 1.添加接口删除方法 2.接口实现类 UserDaoServer 添加实现接口删除方法 3.测试类调用delUser方法 4. 输出结果截 ...

  6. 微信小程序页面之间的跳转

    一.使用标签跳转             index.wxml:             在index.wxml页面添加一个<navigator>元素,在元素里面使用属性url就可以 二. ...

  7. 五个知识体系之-SQL学习-第一天

    1. 创建数据库 CREATE DATABASE test1; 2. 删除数据库 DROP DATABASE test1; 3. 创建表 CREATE TABLE tabname (userid BI ...

  8. 九度OJ 1051:数字阶梯求和 (大数运算)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6718 解决:2280 题目描述: 给定a和n,计算a+aa+aaa+a...a(n个a)的和. 输入: 测试数据有多组,输入a,n(1&l ...

  9. svn 出现冲突时可以使用 meld . 命令合并。 而git的冲突合并详见内容

    1.可以在任意目录使用 git mergetool --tool-help    查看 git 所支持的merge tools. 2.可以使用如下配置去设置merge tool 和 diff tool ...

  10. HDU - 2102 A计划 【BFS】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2102 思路 题目有两个坑点 0.Output 说 能在T时刻 找到公主 就输出 YES 但实际上 只要 ...