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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 测试用sql server数据库保存图片或者其他小文件。 文件流字段用varbinary类型。 static void Main() { Application.

测试用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
相关文章
|
18天前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
84 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
20天前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
5天前
|
Java 关系型数据库 数据库连接
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第3天】Spring Boot项目中数据库连接问题可能源于配置错误或依赖缺失。YAML配置文件的格式不正确,如缩进错误,会导致解析失败;而数据库驱动不匹配、连接字符串或认证信息错误同样引发连接异常。解决方法包括检查并修正YAML格式,确认配置属性无误,以及添加正确的数据库驱动依赖。利用日志记录和异常信息分析可辅助问题排查。
27 10
|
4天前
|
Java 关系型数据库 MySQL
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第4天】本文分析了Spring Boot应用在连接数据库时可能遇到的问题及其解决方案。主要从四个方面探讨:配置文件格式错误、依赖缺失或版本不兼容、数据库服务问题、配置属性未正确注入。针对这些问题,提供了详细的检查方法和调试技巧,如检查YAML格式、验证依赖版本、确认数据库服务状态及用户权限,并通过日志和断点调试定位问题。
|
5天前
|
SQL 存储 移动开发
HTML5 Web SQL 数据库详解
Web SQL 数据库是 HTML5 中的一种本地存储技术,允许在浏览器中使用 SQL 语言操作本地数据,支持离线访问和事务处理,适用于缓存数据和小型应用。然而,其存储容量有限且仅部分现代浏览器支持,标准已不再积极维护,未来可能被 IndexedDB 和 localStorage 等技术取代。使用时需谨慎考虑兼容性和发展前景。
|
11天前
|
SQL 存储 监控
如何在SQL中插入图片
如何在SQL中插入图片
|
14天前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
25 4
|
27天前
|
SQL 存储 数据管理
SQL Server数据库
SQL Server数据库
41 11
|
1月前
|
存储 NoSQL 关系型数据库
可以存储文件的数据库有哪些?
可以存储文件的数据库有哪些?
23 6
|
26天前
|
存储 NoSQL 关系型数据库
可以存储文件的数据库有哪些?
可以存储文件的数据库有哪些?
160 0