您的位置:寻梦网首页编程乐园ASP编程>纯真最新版数据库转MDB数据库及调用方法
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就是要显示的访问用户的具体位置了。

哈哈……,有什么不正确的地方还请高手拍砖。