ASP中连接SQL Server,如何把int型转换成IP地址
ASP中连接SQL Server,怎么把int型转换成IP地址
大家好,我遇到的情况是这样的,asp连接sql server数据库,连接成功。
数据库里面有一列ClientIP(int,null),现在想在asp里面将clientip的类型转换一下,变成ip地址输出。
我在网上看了一些资料,其中有以下几行代码很符合我的要求:
SELECT CAST(ctlip / 0x1000000 AS varchar(3))
+ '.' + CAST(ctlip / 0x10000 % 0x100 AS varchar(3))
+ '.' + CAST(ctlip / 0x100 % 0x100 AS varchar(3))
+ '.' + CAST(ctlip % 0x100 AS varchar(3)) AS ipstr, *
FROM ac_mainctls_new
其中ctlip是设备的IP地址,以整数方式存储,ac_mainctls_new是表。
源地址:http://www.cnblogs.com/zyl910/archive/2012/02/01/sqlserver_query_inttoipstr.html
但是我照着在我的asp文件里面写的时候会出错,我估计这是sql的转换语句,不是asp的。
那请问asp文件里面怎么实现这个功能?
谢谢
------解决方案--------------------
要看报什么错? 这个只是sql语句,asp一样调用的。
先在数据库环境下执行sql语句看看有没有错。 然后再在asp里用ado调用。
------解决方案--------------------
假设IP是192.168.0.1
192*255*255*255+168*255*255+0*255+1
结果就是要得到的数值。
将ip地址转换为长整型
<%
Function CLngIP(ByVal asNewIP)
Dim lnResults
Dim lnIndex
Dim lnIpAry
lnIpAry = Split(asNewIP, ".", 4)
For lnIndex = 0 To 3
If Not lnIndex = 3 Then
lnIpAry(lnIndex) = lnIpAry(lnIndex) * (256 ^ (3 - lnIndex))
End If
lnResults = lnResults + lnIpAry(lnIndex)
Next
CLngIP = lnResults
End Function
%>
逆函数
<%
Function CStrIP(ByVal anNewIP)
Dim lsResults
Dim lnTemp
Dim lnIndex
For lnIndex = 3 To 0 Step -1
lnTemp = Int(anNewIP / (256 ^ lnIndex))
lsResults = lsResults & lnTemp & "."
anNewIP = anNewIP - (lnTemp * (256 ^ lnIndex))
Next
lsResults = Left(lsResults, Len(lsResults) - 1)
CStrIP = lsResults
End Function
%>
大家好,我遇到的情况是这样的,asp连接sql server数据库,连接成功。
数据库里面有一列ClientIP(int,null),现在想在asp里面将clientip的类型转换一下,变成ip地址输出。
我在网上看了一些资料,其中有以下几行代码很符合我的要求:
SELECT CAST(ctlip / 0x1000000 AS varchar(3))
+ '.' + CAST(ctlip / 0x10000 % 0x100 AS varchar(3))
+ '.' + CAST(ctlip / 0x100 % 0x100 AS varchar(3))
+ '.' + CAST(ctlip % 0x100 AS varchar(3)) AS ipstr, *
FROM ac_mainctls_new
其中ctlip是设备的IP地址,以整数方式存储,ac_mainctls_new是表。
源地址:http://www.cnblogs.com/zyl910/archive/2012/02/01/sqlserver_query_inttoipstr.html
但是我照着在我的asp文件里面写的时候会出错,我估计这是sql的转换语句,不是asp的。
那请问asp文件里面怎么实现这个功能?
谢谢
------解决方案--------------------
要看报什么错? 这个只是sql语句,asp一样调用的。
先在数据库环境下执行sql语句看看有没有错。 然后再在asp里用ado调用。
------解决方案--------------------
假设IP是192.168.0.1
192*255*255*255+168*255*255+0*255+1
结果就是要得到的数值。
将ip地址转换为长整型
<%
Function CLngIP(ByVal asNewIP)
Dim lnResults
Dim lnIndex
Dim lnIpAry
lnIpAry = Split(asNewIP, ".", 4)
For lnIndex = 0 To 3
If Not lnIndex = 3 Then
lnIpAry(lnIndex) = lnIpAry(lnIndex) * (256 ^ (3 - lnIndex))
End If
lnResults = lnResults + lnIpAry(lnIndex)
Next
CLngIP = lnResults
End Function
%>
逆函数
<%
Function CStrIP(ByVal anNewIP)
Dim lsResults
Dim lnTemp
Dim lnIndex
For lnIndex = 3 To 0 Step -1
lnTemp = Int(anNewIP / (256 ^ lnIndex))
lsResults = lsResults & lnTemp & "."
anNewIP = anNewIP - (lnTemp * (256 ^ lnIndex))
Next
lsResults = Left(lsResults, Len(lsResults) - 1)
CStrIP = lsResults
End Function
%>