该例子是一个对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. 【Selenium + Python】之如何获取最新的报告以及os.path.getmtime与os.path.getctime的区别

    import os def new_file(test_dir): #列举test_dir目录下的所有文件(名),结果以列表形式返回. lists=os.listdir(test_dir) #sort ...

  2. golang生成随机函数的实现

    golang生成随机数可以使用math/rand包, 示例如下: package main import ( "fmt" "math/rand" ) func ...

  3. java eclipse使用不同jdk版本

    因为开发需要,两个工程分别需要使用jdk1.6(elipse indigo)和jdk1.8(eclipse neon).因为两个eclipse对于jdk版本的要求不同,若只在环境变量中配置jdk版本, ...

  4. os引导程序boot从扇区拷贝os加载程序loader文件到内存(boot copy kernel to mem in the same method)

    [0]README 0.1) 本代码旨在演示 在boot 代码中,如何 通过 loader文件所在根目录条目 找出该文件的 在 软盘所有全局扇区号(簇号),并执行内存中的 loader 代码: 0.2 ...

  5. HTML--2图片热点,网页划区,拼接,表单

    图片热点: 规划出图片上的一个区域,可以做出超链接,直接点击图片区域就可以完成跳转的效果. 示例: 网页划区: 在一个网页里,规划出一个区域用来展示另一个网页的内容. 示例: 网页的拼接: 在一个网络 ...

  6. WCP源码分析 与SpringMVC学习资料

    1.在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便. Spring2.5为我们引入了组件自动扫描机制,他可以在 ...

  7. 【BZOJ1095】[ZJOI2007]Hide 捉迷藏 动态树分治+堆

    [BZOJ1095][ZJOI2007]Hide 捉迷藏 Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩捉 ...

  8. Javascript模块化编程-require.js[3]

    很多情况下,JS都是放到一个或者多个文件里,只要加载这些文件就可以了. 但是对于一些小型项目而言,这种写法是没有任何问题的. 但是对于某些大型网站,JS的量是很大的,如果还采用这种方式,网站时常在加载 ...

  9. SP1437 Longest path in a tree(树的直径)

    应该是模板题了吧 定义: 树的直径是指一棵树上相距最远的两个点之间的距离. 方法:我使用的是比较常见的方法:两边dfs,第一遍从任意一个节点开始找出最远的节点x,第二遍从x开始做dfs找到最远节点的距 ...

  10. Android/iOS Remote debugging

    简单介绍 使用下面方法可以定位webview中的元素,无法定位view中的元素. 原文地址:http://mp.weixin.qq.com/s/y_UfdgjT_pkKgYivJmqt7Q webvi ...