C# 使用SQLDataReader读取IP地址
使用ASP.Net应用程序时,我希望使用SQLDataReader从SQL数据库中提取IPv4信息。当从SQL读取IP时,数据类型是二进制的,我不确定处理这个问题的最佳方法 因为SQLDataReader.GetIPAddress()没有方法,所以我似乎需要使用SQLDataReader.GetBytes()?但是,由于getstring非常简单,因此我希望有另一种更简单的方法来使用getbyte()或其他方法引入IPC# 使用SQLDataReader读取IP地址,c#,sql,asp.net,.net,vb.net,C#,Sql,Asp.net,.net,Vb.net,使用ASP.Net应用程序时,我希望使用SQLDataReader从SQL数据库中提取IPv4信息。当从SQL读取IP时,数据类型是二进制的,我不确定处理这个问题的最佳方法 因为SQLDataReader.GetIPAddress()没有方法,所以我似乎需要使用SQLDataReader.GetBytes()?但是,由于getstring非常简单,因此我希望有另一种更简单的方法来使用getbyte()或其他方法引入IP Do While SQLReader.Read()
Do While SQLReader.Read()
Dim lastcom As System.DateTime = SQLReader.GetDateTime(0)
Debug.WriteLine(lastcom.ToString("MM/dd/yyyy HH:mm:ss.fff"))
Debug.WriteLine(SQLReader.GetString(1))
Debug.WriteLine(SQLReader.GetBoolean(2))
Debug.WriteLine(SQLReader.GetString(3))
Debug.WriteLine(SQLReader.GetString(4))
Label_IP = SQLReader.GetString(1)
Label_Model.Text = SQLReader.GetString(4)
Loop
我对数据库中IP地址的存储方式做了一些假设(仅支持IPv4地址),但您可以尝试以下方法:
Dim ipAddr(3)作为字节
'假设列#1是您的IP地址列
Dim byteCount=SQLReader.GetBytes(1,0,ipAddr,0,4)
如果字节数=4,则
Label_IP.Text=新的IPAddress(ipAddr).ToString()
其他的
Console.WriteLine(“IP地址应为4字节”)
如果结束
我对数据库中IP地址的存储方式做了一些假设(仅支持IPv4地址),但您可以尝试以下方法:
Dim ipAddr(3)作为字节
'假设列#1是您的IP地址列
Dim byteCount=SQLReader.GetBytes(1,0,ipAddr,0,4)
如果字节数=4,则
Label_IP.Text=新的IPAddress(ipAddr).ToString()
其他的
Console.WriteLine(“IP地址应为4字节”)
如果结束
是否尝试将其转换为C#?数据库中存储的IP是什么,我假设它将存储为字符串
,例如varchar
或nvarchar
。无需转换为c#。。我通常用vb.net写。。Getstring无法将类型为“System.Byte[]”的对象强制转换为类型为“System.String”。“GetDataTypeName为列返回二进制,但在数据库中,该列仅包含格式类似于xx.xx.xx.xx的实际ipv4地址。我拒绝编写Visual Basic,而是以Byte[]的形式进行检索。”
在C中,您只需执行:System.Text.Encoding.GetString(…)
。因此,请将字节[]
从字节数据转换回字符串值。是否尝试将其转换为C?数据库中存储的IP是什么,我假设它将存储为字符串
,例如varchar
或nvarchar
。无需转换为c#。。我通常用vb.net写。。Getstring无法将类型为“System.Byte[]”的对象强制转换为类型为“System.String”。“GetDataTypeName为列返回二进制,但在数据库中,该列仅包含格式类似于xx.xx.xx.xx的实际ipv4地址。我拒绝编写Visual Basic,而是以Byte[]的形式进行检索。”
在C中,您只需执行:System.Text.Encoding.GetString(…)
。因此,将字节[]
从字节数据转换回一个字符串值。效果非常好!谢谢还进一步查看,发现sql端的一些存储过程负责二进制转换。不知道为什么这里会出现这种情况,但无论如何都非常感谢您的帮助@杰巴卡很高兴这有帮助。不确定存储过程将执行什么操作-将返回IP地址的字节数组。您可能还想谈一谈-投票/接受答案是表达感谢的最佳方式。:-)工作得很好!谢谢还进一步查看,发现sql端的一些存储过程负责二进制转换。不知道为什么这里会出现这种情况,但无论如何都非常感谢您的帮助@杰巴卡很高兴这有帮助。不确定存储过程将执行什么操作-将返回IP地址的字节数组。您可能还想谈一谈-投票/接受答案是表达感谢的最佳方式。:-)