QLite实际上只有5种数据类型,NULL,INTEGER,REAL,TEXT,BLOB,GUID实际上就是BLOB,也就是二进制,用二进制的方式来保存的,只量SQLite Expert通过判断是GUID类型显示成了GUID的格式。GUID的二进制格式也是有讲究的,否则直接ToString()也得不到正确的二进制格式。下面这段代码就是将GUID转换成正确的二进制字符串格式。
SELECT * FROM [T] WHERE UPPER(HEX([GV]))='" + ConvertGuid(new GUID("{180B5234-6F39-45AF-AA5D-223580C5DFA9}")) + "'";
函数HEX()是将二进制转换成字符串,UPPER是转换成大写。
然后在查询的时候:private string ConvertGuid(Guid gd)
{
string sgd = gd.ToString().ToUpper();
string sVar = "";
int i;
foreach (string sv in new string[] {
sgd.Substring(0, 8), sgd.Substring(9, 4), sgd.Substring(14, 4) })
{
for (i = sv.Length - 2; i >= 0; i -= 2)
{
sVar += sv.Substring(i, 2);
}
}
sgd = sgd.Substring(19).Replace("-", "");
for (i = 0; i < 8; i++)
{
sVar += sgd.Substring(2 * i, 2);
}
return sVar;
}
SELECT * FROM [T] WHERE UPPER(HEX([GV]))='" + ConvertGuid(new GUID("{180B5234-6F39-45AF-AA5D-223580C5DFA9}")) + "'";
函数HEX()是将二进制转换成字符串,UPPER是转换成大写。