刚放假的时候在紧张制作学院的成绩查询系统(名为系统,其实就是一个登录页面+数据显示页面而已)。因此,又重操旧业,写起ASP了(没办法,我只会这个,PHP还没学完,ASP.Net还没入门)。
写程序其实是件很苦的事情,其中会遇到一系列的问题,不过当你遇到多了,也就知道基本该怎么处理了,也就不怕了,只是烦了点而已。正因为如此,我在写程序时,碰到的一些很奇怪的问题也能很快的解决,因为我在不断遇到问题的过程中,也学会了一些解决问题的手段,比如设置断点(可能这个是桌面编程的术语,不知道Web编程有没有这一说。。)
这次遇到了一个比较麻烦的问题就是从SQL Server中读取数据。从表面上看其实并没有什么难度,但是因为之后需要用到计算,所以必须在数据类型不匹配的情况下,就遇到了一个数据类型转换的问题。
一直以来遇到类型转换我经常会碰到问题,而且经常会很莫名不知道为什么会这样,后来经过查阅了大量资料以后,总结出ASP在类型转换时需要注意的一点:被转换的数据不能为空(Null)
我们必须在对变量进行类型转换前,先做一个是否为空的判断,因为很多时候读取出来的数据可能是空的,对于整形来说,默认的应该是0,而字符串类型的确是空的,所以这样就会出现
Microsoft VBScript 运行时错误错误 '800a000d' 类型不匹配: 'Cint'
这样一来,碰到类型转换就不怕了,不过下面这种情况可能是你不太容易想到的,让我整整抓狂了一晚上了呵呵。
在使用了上面的方法以后,仍然存在问题,还是显示类型不匹配,这个又是为什么呢?我在转换前已经做了判断,还是不起作用,难道传输过来的数据不是空的吗?于是我用len()函数测试了一下,显示长度为8,晕~
明明是空的,为什么长度是8?于是直接到SQL Server企业管理器查询,找到了问题所在!原来数据库这个字段默认值为“8个空格”。。我靠!谁设计的数据库表结构,真是的,一点专业水准都没有!
问题结论:因为是8个空格,因此,转换成整形当然是“类型不匹配了”。
经过这次的经验,以后在字符串处理的时候,如果遇到某些看不见的字符难以处理的话,还是使用返回长度的函数看一下究竟有没有字符,然后再根据具体情况进行处理。
本文地址:http://www.steveluo.name/asp-convert-type-problem/
您可能还对这些文章感兴趣:
No Comments
Make A CommentNo comments yet.
Comments RSS Feed TrackBack URL