Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SQLDataReader读取IP地址_C#_Sql_Asp.net_.net_Vb.net - Fatal编程技术网

C# 使用SQLDataReader读取IP地址

C# 使用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()

使用ASP.Net应用程序时,我希望使用SQLDataReader从SQL数据库中提取IPv4信息。当从SQL读取IP时,数据类型是二进制的,我不确定处理这个问题的最佳方法

因为SQLDataReader.GetIPAddress()没有方法,所以我似乎需要使用SQLDataReader.GetBytes()?但是,由于getstring非常简单,因此我希望有另一种更简单的方法来使用getbyte()或其他方法引入IP

    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地址的字节数组。您可能还想谈一谈-投票/接受答案是表达感谢的最佳方式。:-)