Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用C将SQLite Blob转换为GUID#_C#_Sqlite_Blob_Guid - Fatal编程技术网

C# 如何使用C将SQLite Blob转换为GUID#

C# 如何使用C将SQLite Blob转换为GUID#,c#,sqlite,blob,guid,C#,Sqlite,Blob,Guid,我有一个.net mvc应用程序,其中一个表的uniqueidentifier作为primarky,它存储基于GUID的值,如:“3406B0EA-64B4-EA11-9E56-28F10E1895FF”。我有另一个桌面应用程序,它使用dotmimsync框架将数据从主数据库(sqlserver)同步到本地数据库(SQLITE) 同步后,UniqueIdentifier类型将自动转换为Sqlite数据库中的BLOB类型,并且值将存储为二进制数据 我想在我的桌面应用程序中使用C#将这个二进制数据转

我有一个.net mvc应用程序,其中一个表的uniqueidentifier作为primarky,它存储基于GUID的值,如:“3406B0EA-64B4-EA11-9E56-28F10E1895FF”。我有另一个桌面应用程序,它使用dotmimsync框架将数据从主数据库(sqlserver)同步到本地数据库(SQLITE)

同步后,UniqueIdentifier类型将自动转换为Sqlite数据库中的BLOB类型,并且值将存储为二进制数据

我想在我的桌面应用程序中使用C#将这个二进制数据转换为GUID,反之亦然,但在尝试了大量示例/解决方案后,我找不到任何解决方案

以下是我得到的错误:


非常感谢Panagiotis Kanavos为我提供解决方案,以下是我的最终代码:

{
     string str = Encoding.ASCII.GetString(byteData);
     Guid guid = Guid.Parse(str);
      return guid;
}

public static byte[] GuidToByteArray(string guidData)
{
      return Encoding.ASCII.GetBytes(guidData.ToString());
}
我使用第一个方法“ConvertToGUID”将从Sqlite数据库接收的字节[]转换为GUID。当我需要在下拉列表(值字段)中绑定时使用普通GUID而不是字节示例时,我使用此方法


当需要将值存储到数据库中时,我使用的第二种方法是将GUID转换为字节。

非常感谢Panagiotis Kanavos为我提供的解决方案,以下是我的最终代码:

{
     string str = Encoding.ASCII.GetString(byteData);
     Guid guid = Guid.Parse(str);
      return guid;
}

public static byte[] GuidToByteArray(string guidData)
{
      return Encoding.ASCII.GetBytes(guidData.ToString());
}
我使用第一个方法“ConvertToGUID”将从Sqlite数据库接收的字节[]转换为GUID。当我需要在下拉列表(值字段)中绑定时使用普通GUID而不是字节示例时,我使用此方法


当需要将值存储到数据库中时,我使用的第二种方法是将GUID转换为字节。

GUID是二进制值,而不是字符串。它正好有16个字节。
test
包含什么?它可能是GUID的字符串表示形式吗?在这种情况下,您应该将其作为字符串加载,并使用
Guid.parse()
“test”包含数据库中的BLOB值对其进行解析。我怀疑写入SQLite数据库的代码将Guid字符串存储为BLOG,而不是存储实际字节。真正的解决方案是修复该代码,并让它写出16个GUID字节,或者使用
TEXT
类型。如果不可能,您必须将36个字节转换为字符串(例如使用
Encoding.ASCII.GetString(test)
),然后使用
Guid.parse对其进行解析。是的,它包含一个BLOB,其长度对于二进制格式的Guid无效。它对GUIDCheck的特定字符串表示有效-它是一个128位的数字,即16字节。因此,根据定义,BLOB不能包含GUID。36个字符是GUID是二进制值而不是字符串的长度。它正好有16个字节。
test
包含什么?它可能是GUID的字符串表示形式吗?在这种情况下,您应该将其作为字符串加载,并使用
Guid.parse()
“test”包含数据库中的BLOB值对其进行解析。我怀疑写入SQLite数据库的代码将Guid字符串存储为BLOG,而不是存储实际字节。真正的解决方案是修复该代码,并让它写出16个GUID字节,或者使用
TEXT
类型。如果不可能,您必须将36个字节转换为字符串(例如使用
Encoding.ASCII.GetString(test)
),然后使用
Guid.parse对其进行解析。是的,它包含一个BLOB,其长度对于二进制格式的Guid无效。它对GUIDCheck的特定字符串表示有效-它是一个128位的数字,即16字节。因此,根据定义,BLOB不能包含GUID。长度为36个字符