zoukankan      html  css  js  c++  java
  • C# 二进制存储图片到mssql(一)

    今天刚学如何在mssql数据库中存储图片,决定留下笔记,以免后忘。

    SQL Server的联机丛书提供三种二进制数据类型的使用条件说明:

    1.当表列的所有输入数据大小为固定值(且长度小于8000字节)时,使用标准二进制Binary数据类型;

    2.当表列的输入数据长度有很大差别(且长度均小于8000字节)时,使用varBinary数据类型;

    3.当表列输入数据长度超过8000字节时,使用varBinary(max) 数据类型。

    这次利用varBinary(MAX)数据类型存储图片:

      我先在mssql数据库直接测试如下:

         INSERT INTO [blog].[dbo].[img](data)

         SELECT BulkColumn

         FROM OPENROWSET(Bulk 'G:\VS test\WebSites\mail\images\1.gif', SINGLE_BLOB) AS BLOB

         //  结果显示成功

     OPENROWSET语句允许SQL从外部数据源提供程序来存取数据。Bulk是特别为OPENROWSET插入文件和图像而设计的数据源提供程序.

    接着是在aspx页面中显示图片:

    前台页面: 

        <form id="form1" runat="server">
        <div>
            <asp:Image ID="Image1" runat="server" ImageUrl="~/images/12.gif" />
            <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
           
        </div>
        </form>

     aspx.cs代码如下:

        protected void Button1_Click(object sender, EventArgs e)
        {
            string Str = "server=(local); user=grid; database=blog; password=grid";
            SqlConnection conn = new SqlConnection(Str);
            //string cmd = "insert into img(img) values ()";
            conn.Open();
            string cmd = "select data from img";
            SqlCommand com = new SqlCommand(cmd,conn );
            com.CommandType = CommandType.Text;
            SqlDataReader dr = com.ExecuteReader();
            dr.Read();
            Response.BinaryWrite((byte[])dr["data"]);
            conn.Close();
        }

     结果 点击button显示存储的图片成功。

  • 相关阅读:
    系统幂等设计
    一文读懂消息队列一些设计
    DDD应对运营活动系统腐化实践
    一文读懂DDD
    阿里是如何处理分布式事务的
    核心交易系统架构演进
    系统服务化
    重构系统的套路-写有组织的代码
    数组生成树形结构
    js 对象全等判断
  • 原文地址:https://www.cnblogs.com/vvwang/p/3114016.html
Copyright © 2011-2022 走看看