sql server数据库保存图片或者其他小文件

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 原文: sql server数据库保存图片或者其他小文件 测试用sql server数据库保存图片或者其他小文件。 文件流字段用varbinary类型。 static void Main() { Application.
原文: sql server数据库保存图片或者其他小文件

测试用sql server数据库保存图片或者其他小文件。

文件流字段用varbinary类型。



        static void Main()
        {

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            AsposeHelper ah = new AsposeHelper();
            //ah.extractImagesToFiles();
            //bool success=RegHelper.SetData("test\\a\\a1","a1name","name_a111");
            //string data= RegHelper.GetData("test\\a\\a1","");
            //bool success = RegHelper.RemoveKey("", "test");

            DbHelper db = new DbHelper();
            string FilePath = @"F:\360data\重要数据\桌面\测试\";//目录
            string FileName = "001.txt";//要存到数据库的文件
            byte[] FileData = File.ReadAllBytes(FilePath + FileName);
            string Type1 = DateTime.Now.ToString("yyyyMMddHHmmss");
            string Type2 = Guid.NewGuid().IsNull("").Replace("-", "");
            if (FileData.LongLength < 10485760)
            {
                SqlParameter[] param = new SqlParameter[]{
                new SqlParameter("Type1",Type1),
                new SqlParameter("Type2",Type2),
                new SqlParameter("ImageName",FileName),
                new SqlParameter("ImageSize",GetFileSize(FileData.LongLength)),
                new SqlParameter("ImageData",FileData)
                };
                ////写入
                db.ExecuteNonQuery("insert into SystemImage([Type1],[Type2],[ImageName],[ImageSize],[ImageData]) values(@Type1,@Type2,@ImageName,@ImageSize,@ImageData)", param);
            }
            else
            {
                throw new Exception("文件不能大于10M");
            }
            FileData = null;

            //Application.Run(new Form1());

            ////查询,保存为文件
            DataRow dr = db.ExecuteDataRow("select * from SystemImage where imageName='展会平台首页 - 副本.jpg'");
            byte[] data = (byte[])dr["ImageData"];
            FileStream fs = new FileStream(@"F:\360data\重要数据\桌面\" + dr["ImageName"], FileMode.Create);
            //FileStream fs = new FileStream(@"F:\360data\重要数据\桌面\" + "1.txt", FileMode.Create);
            fs.Write(data, 0, data.Length);
            fs.Dispose();
            /*
            ---Sql server建表
            CREATE TABLE [dbo].[SystemImage](
                [Type1] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
                [Type2] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
                [ImageName] [nvarchar](200) COLLATE Chinese_PRC_CI_AS NOT NULL,
                [ImageSize] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
                [ImageData] [varbinary](max) NOT NULL
            )
             */

        }
        public static string GetFileSize(long length)
        {
            string len = "";
            if (length > 1048576)//大于1M
            {
                len = string.Format("{0:f2}MB", ((decimal)length) / 1048576M);
            }
            else if (length > 1024)//大于1M
            {
                len = string.Format("{0:f2}KB", ((decimal)length) / 1024M);
            }
            else
            {
                len = string.Format("{0:f2}B", length);
            }
            return len;
        }

用数据库保存文件不宜过大,本例只是测试文件保存和读取,实际项目中不建议保存图片或者文件到数据库,一般就保存到服务器,把文件的路径保存到数据库就行了。

下面这图是数据库查询结果;

从数据库导出的文件也和原文件一样。





相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
15天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
52 10
|
30天前
|
监控 关系型数据库 数据库
OceanBase数据库常见问题之文件存在但是数据库提示文件不存在如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
1月前
|
SQL Java 数据库连接
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
17 0
|
15天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
88 6
|
3天前
|
NoSQL MongoDB 数据库
MongoDB数据恢复—MongoDB数据库文件被破坏的数据恢复案例
服务器数据恢复环境: 一台Windows Server操作系统服务器,服务器上部署MongoDB数据库。 MongoDB数据库故障&检测: 工作人员在未关闭MongoDB数据库服务的情况下,将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分区进行了格式化操作,然后将数据库文件拷回原分区,重新启动MongoDB服务,服务无法启动。
|
8天前
|
存储 关系型数据库 MySQL
如何处理爬取到的数据,例如存储到数据库或文件中?
处理爬取的数据,可存储为txt、csv(适合表格数据)或json(适合结构化数据)文件。若需存储大量数据并执行复杂查询,可选择关系型(如MySQL)或非关系型(如MongoDB)数据库。以MySQL为例,需安装数据库和Python的pymysql库,创建数据库和表,然后编写Python代码进行数据操作。选择存储方式应考虑数据类型、数量及后续处理需求。
17 1
|
15天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
1月前
|
SQL Java 数据库连接
springboot解析txt文件顺便加到数据库中(nohup文件)
springboot解析txt文件顺便加到数据库中(nohup文件)
112 1
|
1月前
|
SQL Oracle 关系型数据库
干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
12 0
|
7天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
37 2