• [转]Sqlite对Guid数据的处理


    首先明确两点:
    1. Sqlite对Guid的存储方式是将Guid以16位byte[]的形式顺序保存在数据库中。
    2.C#中的Guid对象实际上就是16位byte[],但其表达方式并不是按照byte数组顺序的(具体可以查阅MSDN,这也就是为什么Guid.ToString时显示的以“-”间隔的长度不等的原因),这是导致C#和Sqlite中Guid不匹配的本质原因。
    
    解决方法:
    C# to Sqlite:
    string sql = string.Format("select x'{0}'", BitConverter.ToString(id1.ToByteArray()).Replace("-", ""));
    
    Sqlite to C#:
    假设数据库中的该字段名称为Id类型为guid,取出的数据为object o:
    "select Id from tb;"
    Guid id = (Guid)o;
    假设数据库中该字段类型为blob:
    select Id from tb;
    Guid id = Guid.Parse((byte[])o);

    原文地址:http://hi.baidu.com/usercontrol/item/b5c7570d4512513af3eafc34

  • 相关阅读:
    Executors 构建线程池
    结构型模式——Bridge(未完成)
    结构型模式——Adapter
    创建型模式——Builder
    创建型模式——Abstract Factory
    Java与线程
    Java内存模型
    类加载
    Class类文件的结构
    垃圾收集器
  • 原文地址:https://www.cnblogs.com/qq1223558/p/3126949.html
Copyright © 2020-2023  润新知