netsql数据库编程初试

发表于: 07年11月10日 2007-11-10 21:55:57  评论    文章类别    字体大小 :

  七月份就在网上找到了纯真IP数据库,想自己试着做一个IP查询系统,做那个出来纯粹是想接触接触NET与sql的结合,到目前为止,一直是用的access。认识都是一个过程,都是从未知到已知,从陌生到熟悉。
  下载的软件生成了一个TXT文本文件,17MB多。在设计数据库的时候,我照搬了txt文本的格式.
222.211.147.82  222.211.147.82  四川省成都市 崇州市奔驰网吧(西街)
222.211.147.83  222.211.147.91  四川省成都市 电信ADSL
222.211.147.92  222.211.147.92  四川省成都市 崇州市奔驰网吧(西街)
222.211.147.93  222.211.161.24  四川省成都市 电信ADSL
222.211.161.25  222.211.161.25  四川省成都市 大邑县黄师网吧
  把里面的IP分成了8部分ipp1,ipp2,ipp3,ipp4,ipp5,ipp6,ipp7,ipp8,ipp9以及地址address共计9列,用了一个正则表达式插入到了sql数据库,才发现数据库占用空间达120MB,更要命的是,我如此设计的初衷是想用一个IP的四部分(ip1 ip3 ip3 ip4)分别与上面的ip1-ip8进行比较,即
ip1∈[ipp1 ipp5]      ip2∈ [ipp2 ipp6]  ip3∈[ipp3 ipp7]     ip4∈[ipp4 ipp8]之间,可问题出现了:虽然绝大多数情况满足我预期设想,但像上面蓝色IP部分就成了“漏网之鱼”,如此一查询,结果显然——不出来。想了半天也没想出来,准备把上面的情况一一分解看有多少种情况再创建不同的sql语句,呜呼哀哉,天杀我也!
    可能是想睡觉,一上床得到点“安慰”,猛然想起IP不是一个"255进制"的数吗?如此而已,原来是自己没把对象搞清楚,忙头乱想搞得自己晕头转向。
    一切重新开始,定义了IP1 IPP2 address三列,
    ip1=ipp1*255^3+ipp2*255^2+ipp3*255+ipp4
    ip2=ipp5*255^3+ipp6*255^2+ipp7*255+ipp8
  如此,数据库剧减为21MB,速度不用我说,更重要的是不会有上面那种无结果的现象了。
  此次教训,数据库乃软件生命之躯!~
  以下是放在自己电脑的样本:

  IP查询主页   这是我的IP查询系统