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

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 测试用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
相关文章
|
3天前
|
SQL Oracle 关系型数据库
sql语句创建数据库
在创建数据库之前,请确保你有足够的权限,并且已经考虑了数据库的安全性和性能需求。此外,不同的DBMS可能有特定的最佳实践和配置要求,因此建议查阅相关DBMS的官方文档以获取更详细和准确的信息。
|
14天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
52 10
|
14天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
88 6
|
2天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
|
3天前
|
NoSQL MongoDB 数据库
MongoDB数据恢复—MongoDB数据库文件被破坏的数据恢复案例
服务器数据恢复环境: 一台Windows Server操作系统服务器,服务器上部署MongoDB数据库。 MongoDB数据库故障&检测: 工作人员在未关闭MongoDB数据库服务的情况下,将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分区进行了格式化操作,然后将数据库文件拷回原分区,重新启动MongoDB服务,服务无法启动。
|
3天前
|
SQL 缓存 数据库
sql 数据库优化
SQL数据库优化是一个复杂且关键的过程,涉及多个层面的技术和策略。以下是一些主要的优化建议: 查询语句优化: 避免全表扫描:在查询时,尽量使用索引来减少全表扫描,提高查询速度。 使用合适的子查询方式:子查询可能降低查询效率,但可以通过优化子查询的结构或使用连接(JOIN)替代子查询来提高性能。 简化查询语句:避免不必要的复杂查询,尽量使SQL语句简单明了。 使用EXISTS替代IN:在查询数据是否存在时,使用EXISTS通常比IN更快。 索引优化: 建立合适的索引:对于经常查询的列,如主键和外键,应创建相应的索引。同时,考虑使用覆盖索引来进一步提高性能。 避免过多的索引:虽然索引可以提高查询
|
3天前
|
SQL XML 数据库
sql导入数据库命令
在SQL Server中,数据库导入可通过多种方式实现:1) 使用SSMS的“导入数据”向导从各种源(如Excel、CSV)导入;2) BULK INSERT语句适用于导入文本文件;3) bcp命令行工具进行批量数据交换;4) OPENROWSET函数直接从外部数据源(如Excel)插入数据。在操作前,请记得备份数据库,并可能需对数据进行预处理以符合SQL Server要求。注意不同方法可能依版本和配置而异。
|
8天前
|
存储 关系型数据库 MySQL
如何处理爬取到的数据,例如存储到数据库或文件中?
处理爬取的数据,可存储为txt、csv(适合表格数据)或json(适合结构化数据)文件。若需存储大量数据并执行复杂查询,可选择关系型(如MySQL)或非关系型(如MongoDB)数据库。以MySQL为例,需安装数据库和Python的pymysql库,创建数据库和表,然后编写Python代码进行数据操作。选择存储方式应考虑数据类型、数量及后续处理需求。
17 1
|
11天前
|
SQL 数据库
数据库SQL语言实战(二)
数据库SQL语言实战(二)
|
11天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
38 3