精华内容
下载资源
问答
  • 项目问题总结2:GUID区分大小写吗

    千次阅读 2015-06-29 16:40:42
    问题描述: 最近在做项目的过程中,遇到一个问题,将从基础系统查询...那么数据出问题就应该是数据库的问题了,在进行单步调试的过程中,去检查各个变量以及参数的值,终于找到了问题出在哪里,先来看看两个系统的数

    问题描述:

    最近在做项目的过程中,遇到一个问题,将从基础系统查询出来的课程ID作为参数去考评系统里查询考试信息,却什么也查不出来,调试了半天不知道什么原因。


    问题分析:
    静下心来思考一下,可以肯定程序代码逻辑以及实现是没有问题的,因此就是数据的问题了。那么数据出问题就应该是数据库的问题了,在进行单步调试的过程中,去检查各个变量以及参数的值,终于找到了问题出在哪里,先来看看两个系统的数据库存储CourseId的数据类型是什么吧,如下图:

    上图中左边是基础的,右边是考试的。再来看看我的代码是如何实现问题描述里所说的过程吧:

    想着想着就意识到一个问题,GUID是什么鬼??
    于是百度了 一下:全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) 。GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。
    人家是数字标识符好不好,区分什么大小写啊!唉,读书少啊!不信,我们可以使用代码进行验证:
                //验证GUID是否区分大小写
                Guid g1 = new Guid("6d025d37-a957-44b1-9e25-50d6bfd57a39");
                Guid g2 = new Guid("6D025D37-A957-44B1-9E25-50D6BFD57A39");
                Console.WriteLine(g1.Equals(g2));                   // 返回true
                Console.WriteLine(Object.ReferenceEquals(g1, g2));  // 返回false
    
                //使用tostring函数将GUID转换为string类型,观察他们的值
                string strg1 = g1.ToString();
                string strg2 = g2.ToString();
                Console .WriteLine (strg1.Equals (strg2 ));  //返回true
                Console.WriteLine(strg1);
                Console.WriteLine(strg2);
                //但是如果你的数据库存储类型为varchar,那就不一样了
                string str1 = "6d025d37-a957-44b1-9e25-50d6bfd57a39";
                string str2 = "6D025D37-A957-44B1-9E25-50D6BFD57A39";
                Console.WriteLine(str1.Equals(str2));  //返回false
                Console.Read();
    而前面提到的uniqueidentifier,则是GUID在数据库里的存储类型,他们其实是一个东西。如此一来,就明朗了许多。

    问题解决:
    办法有两个:一个是让两者的数据库的数据类型保持一致,这是根本上的解决之道;如果不想修改数据库的话,可以接着使用varchar的数据类型去存储GUID的字符串,但是要保证其必须是字母小写的格式,否则在根据其字段值进行查询的时候,字符串是无法和guid的ToString()方法产生的字符串进行匹配的,因此查询结果肯定不正确,建议还是统一数据类型吧。

    小结 一下:
    其实仔细想想还是基础性的东西不扎实,我根本不知道GUID的概念,因此才会有标题所述的疑问。如果我清楚的知道GUID是一种由算法生成的二进制长度为128位的数字标识符,那么也许会很快的找到问题出在哪里。
    展开全文
  • 5.6.1 数据库写入器和前协议 155 5.6.2 SCN 156 5.6.3 撤销管理 156 5.7 备份与恢复体系结构 157 5.7.1 用户管理的备份与恢复 157 5.7.2 RMAN 157 5.7.3 Oracle Secure Backup 158 5.7.4 闪回恢复...
  • 精 度:通过鼠标点击或快捷键进入子模块,对在文本框内输入的大小写敏感,姓名和密码都区分大小写 灵 活 性:用户鼠标点击可以进行确认,按E键表示关闭当前窗口; 时间特性:用户输入后的验证时间在1秒之内; 5.4输...
  • 占用资源。 14.CTS、CLS、CLR分别作何解释? 答:CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。 15.什么是装箱和拆箱? 答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。 ...
  • 8.7.4 区分新旧记录 217 8.7.5 在交叉表查询中使用“总计”行 220 8.8 查询过程的结构 224 8.8.1 定义查询 224 8.8.2 编译 224 8.8.3 准备执行计划(优化) 225 8.9 Jet的优化方法 225 8.9.1 应用...
  • 8.7.4 区分新旧记录 217 8.7.5 在交叉表查询中使用“总计”行 220 8.8 查询过程的结构 224 8.8.1 定义查询 224 8.8.2 编译 224 8.8.3 准备执行计划(优化) 225 8.9 Jet的优化方法 225 8.9.1 应用Rushmore...
  • asp.net知识库

    2015-06-18 08:45:45
    忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中的异常 与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,...
  • 数据库】分页查询语句怎么? 110 Mysql数据库 110 SQL Server 110 Oralce数据库 111 【数据库】存储过程与SQL语句对比 111 【数据库数据库优化 113 【数据库】MySQL常用的四种引擎的介绍 118 【架构】简单描述...
  • 3.3.9 一个的含有50M个URL的记录,一个的含有500个URL的记录,找出两个记录里相同的URL 3.4.0 海量日志数据,提取出某日访问百度次数最多的那个IP 3.4.1 有10个文件,每个文件1G,每个文件的每一行都存放的是...
  • php高级开发教程说明

    2008-11-27 11:39:22
    中获得一个源文件并需要添加一些特征,首先必须对其进行整体把握,并区分代码的各个部分。 理想情况下,这一过程将和阅读源文件平行进行,但由于在没有提示和公共样本帮你理清代码 来阅读的情况下,这是不可能做到的...
  • 最新Java面试宝典pdf版

    热门讨论 2011-08-31 11:29:22
    27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 JDBC 有何不一样? 113 六. XML部分 113 1...
  • Java面试宝典-经典

    2015-03-28 21:44:36
    27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 JDBC 有何不一样? 113 六. XML部分 113 1...
  • Java面试宝典2010版

    2011-06-27 09:48:27
    27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极). 28、这段代码有什么不足之处? 29、说出数据连接池的工作机制是什么? 30、为什么要用 ORM? 和 JDBC 有何不一样? 六. XML部分 1、xml有哪些解析...
  • Java面试宝典2012版

    2012-12-03 21:57:42
    27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 JDBC 有何不一样? 113 六. XML部分 ...
  • java面试宝典2012

    2012-12-16 20:43:41
    27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极). 122 28、这段代码有什么不足之处? 123 29、说出数据连接池的工作机制是什么? 123 30、为什么要用 ORM? 和 JDBC 有何不一样? 123 六. XML部分 124 1...
  • 27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 JDBC 有何不一样? 113 六. XML部分 113 1...
  • Java面试笔试资料大全

    热门讨论 2011-07-22 14:33:56
    27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 JDBC 有何不一样? 113 六. XML部分 113 1...
  • Java面试宝典2012新版

    2012-06-26 19:20:00
    27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 JDBC 有何不一样? 113 六. XML部分 113 1...
  • JAVA面试宝典2010

    2011-12-20 16:13:24
    27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 JDBC 有何不一样? 113 六. XML部分 113 1...
  • 17.1.2 检查大小写样式 17.2 方法查找工具 17.3 复杂性理论 17.4 总结 17.5 练习 附录A 使用非Java代码 A.1 Java固有接口 A.1.1 调用固有方法 A.1.2 访问JNI函数:JNIEnv自变量 A.1.3 传递和使用Java对象 A.1.4 JNI...
  • java面试题典 java 面试题 经典

    热门讨论 2010-06-18 13:42:36
    48. clone()方法时,通常都有一行代码,是什么? 15 49. 在JAVA中,如何跳出当前的多重嵌套循环? 15 50. List、Map、Set三个接口,存取元素时,各有什么特点? 16 51. 说出一些常用的类,包,接口,请各举5个 ...
  • Java程序员面试宝典pdf

    热门讨论 2013-02-21 13:06:13
    面试题012 Java的变量分哪两种的数据类型 30 面试题013 Java包含哪些基本数据类型及其包装类 32 面试题014 如何理解Java中的装箱和拆箱 33 面试题015 Java的引用和C++的指针有什么区别 34 面试题016 请简述Java中...
  • 17.1.2 检查大小写样式 17.2 方法查找工具 17.3 复杂性理论 17.4 总结 17.5 练习 附录A 使用非Java代码 A.1 Java固有接口 A.1.1 调用固有方法 A.1.2 访问JNI函数:JNIEnv自变量 A.1.3 传递和使用Java对象 A.1.4 JNI...
  • 面试题012 Java的变量分哪两种的数据类型 30 面试题013 Java包含哪些基本数据类型及其包装类 32 面试题014 如何理解Java中的装箱和拆箱 33 面试题015 Java的引用和C++的指针有什么区别 34 面试题016 请简述...
  • 疯狂JAVA讲义

    2014-10-17 13:35:01
    学生提问:使用组合关系来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统开销更? 159 5.9 初始化块 159 5.9.1 使用初始化块 160 5.9.2 初始化块和构造器 161 5.9.3 静态初始化块 162 ...
  • 27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极). 112 28、这段代码有什么不足之处? 112 29、说出数据连接池的工作机制是什么? 113 30、为什么要用 ORM? 和 JDBC 有何不一样? 113 六. XML部分 113 1...
  • Python复习笔记

    2019-04-27 14:26:38
    Python 中的标识符是区分大小写的。 以下划线开头的标识符是有特殊意义的。 以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入; 以双下划线开头...

空空如也

空空如也

1 2 3
收藏数 56
精华内容 22
关键字:

数据库代码区分大小写吗