|
ASP世界
纯真最新版数据库转MDB数据库及调用方法
作者:不详 来源:互联网
网上查了一些关于此方面的资料,但有很多都是错误的,希望此贴能给大家一个引导吧,如果有什么不懂的,随时欢迎交流。
去纯真网站上下载ip数据库,同时随数据库附送的查询程序(Showip.exe)具有在线检测并升级IP数据库的功能,只要运行该程序,点击右上角的“在线升级”,就可以升级IP数据库到最新的版本,无需再到下载网站下载新版的IP数据库。 同时查询程序(Showip.exe)还提供了解压为.txt文件的功能 我们就借助这一功能实现转MDB格式的数据库。 第一步:打开查询程序(Showip.exe),点击解压 第二步:保存导出的数据文本为 Addressip.txt ,提示成功后,确定关闭。 第三步:新建一个MDB文件,命名为 Addressip.mdb,点击打开,使用Access提供的导入文本文件的功能,把刚才导出的ipaddress.txt导入到数据库中。 “文件”--> “获取外部数据” --> “导入” 注意在导入的时候选择导入类型为 txt 的 第四步:导入文本向导: 1、选择[固定宽度-字段之间使用空格使所有字段在列内对齐]选项 2、下一步: 3、下一步:新表中; 4、下一步:修改相应的字段,这里的字段1和字段2(也就是IP字段)不可以设置为“整形,长整形,单精度型,双精度型”,否则在导入的时候会出错; 5、下一步:让Access添加主键 6、下一步:默认Addressip表名,点“完成”。 在此想说一下,既然要用到这个IP数据库,肯定是要判断访问者的IP。不论是动网,还是风讯都是采用IP的转换后的方式来判断。这样比较方便取到IP段。 第五步:在数据库中的Addressip数据表中建立两个字段,分别为Starip,Endip,设置此两个字段的类型为“数字”型,并且在常规的选项卡中选择“字段大小”为“双精度型”。关闭数据库。 第六步:在ASP环境下运行添加转换后的字段内容,运行add_ip.ASP。此代码没有连接数据库的代码,请自行加上。 代码: dim rs,star,id,i,LoginIP dim str1,str2,str3,str4 ,num,db_address,Get_Address_Rs,rs_gg i = 1 set rs=server.CreateObject("adodb.recordset") '添加Starip字段内容 rs.open "select * from addressip where id between 1 and 326807",conn,1,3 do while i < 326807 LoginIP = rs("star") id = rs("id") str1=left(LoginIP,instr(LoginIP,".")-1) LoginIP=mid(LoginIP,instr(LoginIP,".")+1) str2=left(LoginIP,instr(LoginIP,".")-1) LoginIP=mid(LoginIP,instr(LoginIP,".")+1) str3=left(LoginIP,instr(LoginIP,".")-1) str4=mid(LoginIP,instr(LoginIP,".")+1) num=cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1 set rs_gg = server.CreateObject("adodb.recordset") rs_gg.open "update addressip set starip = "&num&" where id = "&i,conn,3,3 i = i +1 rs.movenext loop rs.close : set rs = nothing set rs=server.CreateObject("adodb.recordset") '添加Endip字段内容 rs.open "select * from addressip where id between 1 and 326807",conn,1,3 do while i < 326807 LoginIP = rs("end") id = rs("id") str1=left(LoginIP,instr(LoginIP,".")-1) LoginIP=mid(LoginIP,instr(LoginIP,".")+1) str2=left(LoginIP,instr(LoginIP,".")-1) LoginIP=mid(LoginIP,instr(LoginIP,".")+1) str3=left(LoginIP,instr(LoginIP,".")-1) str4=mid(LoginIP,instr(LoginIP,".")+1) num=cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1 set rs_gg = server.CreateObject("adodb.recordset") rs_gg.open "update addressip set endip = "&num&" where id = "&i,conn,3,3 i = i +1 rs.movenext loop rs.close : set rs = nothing 此时MDB的数据库就已经转换成功了。 第七步:以下为调用的方法, 代码: Get_Address(LoginIP)'转换IP地址进行比较 dim str1,str2,str3,str4 ,num,db_address,Get_Address_Rs num = "" : db_address = "" str1=left(LoginIP,instr(LoginIP,".")-1) LoginIP=mid(LoginIP,instr(LoginIP,".")+1) str2=left(LoginIP,instr(LoginIP,".")-1) LoginIP=mid(LoginIP,instr(LoginIP,".")+1) str3=left(LoginIP,instr(LoginIP,".")-1) str4=mid(LoginIP,instr(LoginIP,".")+1) num=cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1 Set Get_Address_Rs=Conn.execute("select Country from AddressIP where StarIP <="&num&" and EndIP >="&num&"") '根据IP得到地址 if not Get_Address_Rs.eof then db_address = Get_Address_Rs(0) end if Get_Address_Rs.close set Get_Address_Rs = Nothing Get_Address = db_address End userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR") userip = Get_Address(userip) else userip = Get_Address(userip) end if userip就是要显示的访问用户的具体位置了。 哈哈……,有什么不正确的地方还请高手拍砖。 |