问题描写叙述:

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


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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlhbmppYW5nd2Vp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="362" height="143" alt="">

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


想着想着就意识到一个问题。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位的数字标识符,那么或许会非常快的找到问题出在哪里。

项目问题总结2:GUID区分大写和小写吗?的更多相关文章

  1. MySQL查询时强制区分大写和小写

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zyb_icanplay7/article/details/24981791 平时非常少会考虑数据存储 ...

  2. Linux下设置MySQL不区分大写和小写

            MySQL在Linux下数据库名.表名.列名.别名大写和小写规则:  1.数据库名与表名是严格区分大写和小写  2.表的别名是严格区分大写和小写  3.列名与列的别名在全部的情况下均是 ...

  3. ThinkPHP3.2 新bug ReadHtmlCache 支持不区分大写和小写的函数

    报错提示: Fatal error: Function name must be a string in D:\wwwroot\zbphp.com\ThinkPHP\Library\Behavior\ ...

  4. StirngUtil工具类 之 邮箱注冊 域名不区分大写和小写方法

    /** * 传入邮箱域名所有变为小写,然后拼接前缀返回 *<b>Summary: </b> * emailDomainTransform() * @param domain * ...

  5. 怎样设置mysql的表不区分你大写和小写

    Linux上安装MySQL默认是数据库的表大写和小写敏感的.改动非常easy.仅仅要该一个mysql的配置文件就能够了. mysql> show tables; +--------------- ...

  6. mysql大写和小写问题

    曾经做企业项目的时候,用的都是oracle数据库,在新公司项目用的是mysql,有关mysql大写和小写的问题 1   windows下默认mysql是不区分大写和小写的,要想让其支持大写和小写.更改 ...

  7. vim忽略大写和小写查找配置

    作者:zhanhailiang 日期:2014-12-17 默认 vim 的查找是区分大写和小写,可通过下面两种方式实现忽略大写和小写查找 set ic? noignorecase 1 指令设定: : ...

  8. 无法识别的属性“targetFramework”。请注意,属性名是大写和小写。错误的解决方案

    "/CRM"应用server错. 配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查以下的特定错误具体信息并适当地改动配置文件. 分析器错误消息: 无法识别的属性 ...

  9. ORA-01078错误举例:SID的大写和小写错误

    案例重演: dbca建库.SID:metro    --手工建库时实例名小写的metro ...... [oracle@org54 ~]$ export ORACLE_SID=METRO        ...

随机推荐

  1. jquery map.js

    (function ($) { HashMap = function () { var index = 0; var content = ''; var keyV = new Array(); var ...

  2. BZOJ 1226 [SDOI2009]学校食堂Dining ——状压DP

    看到B<=8,直接状态压缩即可. dp[i][j][k]表示当前相对位置是关于i的,并且i以前的已经就餐完毕,j表示i和之后的就餐情况,k表示上一个就餐的人的相对位置. 然后Dp即可 #incl ...

  3. HDU 5352 MZL's City (2015 Multi-University Training Contest 5)

    题目大意: 一个地方的点和道路在M年前全部被破坏,每年可以有三个操作, 1.把与一个点X一个联通块内的一些点重建,2.连一条边,3.地震震坏一些边,每年最多能重建K个城市,问最多能建多少城市,并输出操 ...

  4. Tomcat 调优技巧

    Tomcat 调优技巧:1.Tomcat自身调优: ①采用动静分离节约Tomcat的性能: ②调整Tomcat的线程池: ③调整Tomcat的连接器: ④修改Tomcat的运行模式: ⑤禁用AJP连接 ...

  5. jenkins使用流程

    jenkins使用流程 看下面那个连接的吧. http://www.cnblogs.com/zz0412/p/jenkins02.html 1.设置git库 2.点击add添加github用户名.密码 ...

  6. linux 安装软件出现/tmp 磁盘不足时 解决方案

    1.解决办法 mkdir  文件夹——你可以使用的文件夹 比如说 mkdir /mnt/tmp 然后只要export TMPDIR=/mnt/tmp 这样就不会出现 tmp文件夹不够用的情况

  7. 51nod1026 矩阵中不重复的元素 V2

    $n \leq 500000,m \leq 500000$的矩阵,第一行第一列是$a^b,2 \leq a,b \leq 500000$,如果一个数是$i^j$那他右边是$i^{j+1}$,下面是${ ...

  8. 关于a标签的onclick和href谁先执行的问题

    今天上午遇到一个问题,我想在a标签跳转的时候增加一些程序上的判断,但又不会影响a标签的正常跳转,于是就有了这篇文章. 我的具体代码是这样的: <a href="http://www.m ...

  9. My97DatePicker 时间控件

    <td> <input type="text" id="sendDate" name="sendDate" class=& ...

  10. SGU 106 在区间范围内的线性方程解个数

    题意:求解方程ax+by+c=0,在区间x1->x2和y1->y2的解的个数. 看似简单,真心a的不容易啊! 开始跪于第8组数据,原因是没用long long !后来改了,跪于12组,超时 ...