将 Uint8List 存储到 SQL 服务器

Storing Uint8List into SQL Server

我正在使用 Flutter,我正在研究从图库中获取图片列表并将它们转换为 List<Uint8List> 以将它们存储在 SQL 服务器数据库中的功能。

我对存储每个 Uint8List 数据的正确数据类型有疑问。 当我使用其他语言的 byte[] 时,我使用 varbinary(MAX) 存储数据,它看起来像这样: 0x89504E470D0A1A0A0000000D49484452000000380000004A080400000044655F5F0000016A49444154785EEDDA3F6AC33014C0E1DA2DC42521B3C76CB940F65CA2BD434ED06EED0172852CD93364EED05E2174CA0D32650A34E03FFA55E60D6F2826B5239B52DE7B48605BF2C7434618EC9B1E024D39EC33F80FA081E1C340030D34D040030D34D040460C48B86F980903468D4122DF5EC938F1D5304F64BCC81D1A81C40C58D326D624C4CD40212312B640F

现在 List<Uint8List> 每个文件的数据如下所示:

[255, 216, 255, 225, 1, 182, 69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 7, 1, 16, 0, 2, 0, 0, 0, 26, 0, 0, 0, 98, 1, 0, 0, 4, 0, 0, 0, 1, 0, 0, 3, 192, 1, 1, 0, 4, 0, 0, 0, 1, 0, 0, 5, 0, 1, 50, 0, 2, 0, 0, 0, 20, 0, 0, 0, 124, 1, 18, 0, 3, 0, 0, 0, 1, 0, 1, 0, 0, 135, 105, 0, 4, 0, 0, 0, 1, 0, 0, 0, 152, 1, 15, 0, 2, 0, 0, 0, 8, 0, 0, 0, 144, 0, 0, 0, 0, 65, 110, 100, 114, 111, 105, 100, 32, 83, 68, 75, 32, 98, 117, 105, 108, 116, 32, 102, 111, 114, 32, 120, 56, 54, 0, 63, 63, 63, 63, 58, 63, 63, 58, 63, 63, 32, 63, 63, 58, 63, 63, 58, 63, 63, 0, 117, 110, 107, 110, 111, 119, 110, 0, 0, 16, 130, 157, 0, 5, 0, 0, 0, 1, 0, 0, 1, 94, 130, 154, 0, 5, 0, 0, 0, 1, 0, 0, 1, 102, 146, 146, 0, 2, 0, 0, 0, 4, 63, 63, 63, 0, 146, 145, 0, 2, 0, 0, 0, 4, 63, 63, 63, 0, 146, 144, 0, 2, 0, 0, 0, 4, 63, 63, 63, 0, 146, 10, 0, 5, 0, 0, 0, 1, 0, 0, 1, 110, 146, 9, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 136, 39, 0, 3, 0, 0, 0, 1, 0, 100, 0, 0, 144, 4, 0, 2, 0, 0, 0, 20, 0, 0, 1, 118, 144, 3, 0, 2, 0, 0, 0, 20, 0

所以我很困惑如何存储这些数据以及我应该在 SQl 服务器中使用什么数据类型。

提前致谢。

SQL 服务器没有直接映射到列表的数据类型,因此正确的选择可能取决于您打算如何使用列表值。

部分选项:

  1. 创建一个新的 table 并将每个列表值连同将其关联回主 table 的键值存储在单独的行中。通过这种方式,您可以轻松地直接单独处理所有值,并将值定义为 INT,但需要权衡额外的 table 并确保正确关联这些值。
  2. (N)VARCHAR(MAX) - 将它们存储为字符值允许您将列表存储为 '[255, 216, 255, 225, 1, 182, 69, 120, 105, 102, 0, 0, 77 , 77, 0, 42]'。这会将列表分隔符和括号作为边界,然后让您将其读回您的代码。但是,需要考虑 INTCHAR 数据类型之间的转换。如果您需要处理列表的值,则需要使用 STRING_SPLIT 将列表转换为 table,然后进一步 CAST/CONVERT 数据类型从 CHAR 回到 INT.
  3. JSON - 您还可以将列表处理成 JSON 格式,然后再次将其存储在 VARCHAR(MAX) 列中。好处是您可以使用 SQL 服务器中的 JSON 函数来处理列表项。

希望对您有所帮助