当前位置:C++技术网 > 资讯 > 工作日记:数据库NULL类型读取失败解决办法

工作日记:数据库NULL类型读取失败解决办法

更新时间:2015-06-25 15:00:19浏览次数:1+次

2013年9月5日  星期 四  小雨

    昨天开始,开始做公司WIP项目的事情,主要内容就是做一个通用数据库编辑器,用来浏览数据库的。昨天设计好界面,实现背景图片设置。今天上午实现了连接数据库和检索服务器数据库列表和数据库的数据表的列表。下午实现了根据表检索数据并显示到列表控件。然而在读取表数据时,有些表竟然读取不出来,调试了很久也没搞明白。请教了朱念,他帮我分析问题,告诉我,调试问题要将有问题的地方分解开来,否则很难发现问题。然后给了我思路。问题是找到了,就是数据转换问题,可是就是没办法。然后我分析,转换函数可以接受常量字符串的类型,如果是空字符那么也是可以的,那么可能的原因就是数据库里的类型不是空字符串类型。NULL类型不是空类型,它是不确定的类型,因此在转换时函数并没有这个版本的重载,因此转换失败。所以,我在数据库中将一部分的NULL类型的数据改成空值,然后实验,结果说明就是这个NULL类型引起的,证明了刚才的假设。那么,就根据朱念给我的类型转换函数,抽取NULL类型的转换,对变量进行类型判断,如果为NULL类型,则设置变量为空。这样问题就解决了。然后测试其他数据库,数据表中含NULL的数据都可以正常读取。问题解决成功。
    朱念提出他的数据库读取数据的常用做法,就是将数据全部一次性读取到一个数组类型的变量中,或者容器中,然后再设置到列表控件中。这样的话,读取速度会快很多。这个是常用的做法,得学会。还有,他说要我用他给的类型转换函数,这样安全点。我得将强制转换的类型是否安全确定一下,如果安全就直接强制转换,这样速度会快些。
    今天徐磊和我讲了很多项目管理的东西,让我受益不少。
    回到宿舍,运行我的数据库结果提示失败,猛想到是数据源的问题。这得改成不依赖数据源的。